繁体   English   中英

如何构造一个 python 导入语句来检查调用命名空间中是否存在模块别名?

[英]How do I construct a python import statement to check for the presence of a module alias in the calling namespace?

我正在尝试编写一个向plotly.express包添加函数的plotly.express 我正在努力让它发挥作用:

>>> import plotly.express as px
>>> import plotly_ecdf
>>> px.ecdf()
'ECDF plot here!'

这实际上与plotly_ecdf.py中的plotly_ecdf.py

# plotly_ecdf.py

import plotly.express as px


def ecdf():
    print("ECDF plot here!")


px.ecdf = ecdf

奇怪的是,如果我还没有导入plotly.expressplotly_ecdf导入也会失败:

>>> import plotly_ecdf
>>> px.ecdf()
NameError: name 'px' is not defined

我尝试利用这个响应 在函数中调用时,我可以访问和写入变量,但在导入语句期间无法使用它。

那么我如何修改plotly_ecdf.py以检查是否已经导入了plotly.express以便我可以抛出错误(如果不是)? 如果这可以修改已分配给plotly.express任何别名,则加分。 提前致谢!

我不认为我完全理解你想要什么。 如果这是一个添加到现有plotly.express包的库,那么我建议将plotly_ecdf.py转换为带有setup.py的适当 python 包,然后使plotly成为一个要求

尝试以另一种方式做这件事似乎不是一个好主意。 虽然如果你愿意,你可以这样做:

try:
    import plotly.express as px

except NameError:
    print("Plotly.express not installed \nPlease install using pip install plotly")

但我建议不要这样做,因为创可贴解决方案总是失败。

编辑根据您的评论,您也可以简单地通过像这样设置目录树来做到这一点:

plotly_ecdf.py
requirements.txt
readme.md

然后在requirements.txt指定:

plotly

并在您的自述文件中添加一行

## Dependencies

install all dependencies by running ```pip install -r requirements.txt```

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM