我已经通过解压缩tar.gz并运行setup.py来安装了一些软件包。
我正在检查
>>> import sys
>>> '[packagename]' in sys.modules
但是对于所有人来说,它一直在说False
。我错过了什么?
答案 0 :(得分:2)
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
答案 1 :(得分:0)
我已经在虚拟环境中执行了conda update --all
,然后在“基本”环境中执行了该错误,该错误消失了。更新虚拟环境后,错误仍然存在。这就是为什么我认为它是由虚拟环境和“基本”环境中的两个不同版本(在我的情况下为numpy:ImportError: parent 'numpy' not in sys.modules
)引起的。