Python模块没有出现在sys.modules中

时间:2017-08-16 15:36:28

标签: python install packages python-module

我已经通过解压缩tar.gz并运行setup.py来安装了一些软件包。

我正在检查

>>> import sys
>>> '[packagename]' in sys.modules

但是对于所有人来说,它一直在说False。我错过了什么?

2 个答案:

答案 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)引起的。