【发布时间】:2018-01-24 20:15:43
【问题描述】:
我已经通过解压 tar.gz 并运行 setup.py 安装了一些包。
我正在检查
>>> import sys
>>> '[packagename]' in sys.modules
但它一直说False,对他们所有人来说。我错过了什么?
【问题讨论】:
标签: python installation packages python-module
我已经通过解压 tar.gz 并运行 setup.py 安装了一些包。
我正在检查
>>> import sys
>>> '[packagename]' in sys.modules
但它一直说False,对他们所有人来说。我错过了什么?
【问题讨论】:
标签: python installation packages python-module
sys.modules 仅显示已加载到您的环境中的模块。
sys.modules
这是一个将模块名称映射到模块的字典 已经加载的。这可以被操纵以强制 重新加载模块和其他技巧。然而,更换 字典不一定会按预期工作并删除 字典中的基本项目可能会导致 Python 失败。
要获得你想要的行为,你需要先导入模块:
import sys
import packagename
'packagename' in sys.modules #True
如果您在控制台中,并且想检查您是否有可用的模块,只需尝试导入它。如果不存在,会报错:
>>> import packagename
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'packagename'
如果您正在编写代码并希望在使用模块之前以一种简洁的方式检查模块是否存在,那就是easier to ask for forgiveness than permission。
try:
import packagename
except ImportError:
#handle the error
【讨论】:
我在我的虚拟环境中执行了conda update --all,之后又在“基础”环境中执行了,错误消失了。更新我的虚拟环境后,错误仍然存在。这就是为什么我认为它是由虚拟环境和“基本”环境中的两个不同版本(在我的情况下为 numpy:ImportError: parent 'numpy' not in sys.modules)引起的。
【讨论】: