Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何构造python导入语句来检查调用名称空间中是否存在模块别名?_Python - Fatal编程技术网

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

如何构造python导入语句来检查调用名称空间中是否存在模块别名?,python,Python,我正在尝试编写一个小程序包,向plotly.express程序包添加一个函数。我正在努力让这一切顺利进行: >>> import plotly.express as px >>> import plotly_ecdf >>> px.ecdf() 'ECDF plot here!' 这实际上与plotly_ecdf.py中的内容一样: # plotly_ecdf.py import plotly.express as px def ec

我正在尝试编写一个小程序包,向
plotly.express
程序包添加一个函数。我正在努力让这一切顺利进行:

>>> import plotly.express as px
>>> import plotly_ecdf
>>> px.ecdf()
'ECDF plot here!'
这实际上与
plotly_ecdf.py中的内容一样:

# plotly_ecdf.py

import plotly.express as px


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


px.ecdf = ecdf
奇怪的是,如果我还没有导入
plotly.express
,那么
plotly\u ecdf
导入也会失败:

>>> import plotly_ecdf
>>> px.ecdf()
NameError: name 'px' is not defined
我试着利用这个机会。在函数中调用时,我可以访问和写入变量,但在import语句中,我无法让它工作


那么,如何修改
plotly_ecdf.py
以检查是否已导入
plotly.express
,以便在未导入时抛出错误?如果可以修改指定给的任何别名
plotly.express
,则可获得额外积分。提前谢谢

我想我不太明白你想要什么。如果这是一个添加到现有的
plotly.express
包中的库,那么我建议将
plotly_ecdf.py
转换为一个正确的python包,然后使用a制作
plotly
a

试着用另一种方式做这件事似乎不是个好主意。不过,如果您愿意,您可以:

试试看:
将plotly.express导入为px
除名称错误外:
打印(“Plotly.express未安装\n请使用pip install Plotly安装”)
但是我建议反对它,因为创可贴解决方案总是失败。

编辑 根据您的评论,您也可以简单地通过如下方式设置目录树:

plotly_ecdf.py
requirements.txt
readme.md
然后在
requirements.txt中指定:

plotly
并在自述文件中添加一行

## Dependencies

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

不确定您为什么要尝试使用monkey patch plotly.express。无论如何,
px
仅在
plotly_ecdf.py
文件中定义(在范围内)
ecdf()
是在范围
plotly.express
中定义的-在之前添加
import plotly.express
,然后尝试
plotly.express.ecdf()
这是一个很好的例子,可以让一门语言按照您的意愿去做,而不是按照它的设计方式去使用它。不要。它对你未来的自我没有帮助,而且它肯定不会被其他必须阅读你的代码的人欣赏。如果你分享你为什么要这样做,以及你希望实现什么,也许有人能告诉你如何去做。我正在尝试做一些类似于pyjanitor()的事情,它修改pandas以添加方便的方法。我只是尝试monkeypatch plotly express,而不是创建一个完整的对plotly的请求。我可能会根据得到的响应创建一个带有独立函数的包though@BenLindsay最后我又加了一个解释,那就是最短的路。这仍然不允许您安装该函数,但是如果它只是项目中的一个包装器,那么它是一个选项。如果您想查看我在这里制作的“helper”函数包的示例:感谢您的输入,如果我的问题不清楚,请原谅,但我了解了如何使用setup.py使绘图成为依赖项/需求。我的目标是尝试启用我的第一个代码块,以便运行
import plotly\u ecdf
修改已导入的plotly.express模块,向其添加ecdf函数。这比仅仅将plotly添加到setup.py的
requirements
变量更复杂,因为我需要从原始范围访问
px
变量。不过,根据您和其他人的反馈,我倾向于远离这种设置