【问题标题】:Python module not showing up in sys.modulesPython 模块未出现在 sys.modules 中
【发布时间】:2018-01-24 20:15:43
【问题描述】:

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

我正在检查

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

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

【问题讨论】:

    标签: python installation packages python-module


    【解决方案1】:

    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
    

    【讨论】:

      【解决方案2】:

      我在我的虚拟环境中执行了conda update --all,之后又在“基础”环境中执行了,错误消失了。更新我的虚拟环境后,错误仍然存​​在。这就是为什么我认为它是由虚拟环境和“基本”环境中的两个不同版本(在我的情况下为 numpy:ImportError: parent 'numpy' not in sys.modules)引起的。

      【讨论】:

        猜你喜欢
        • 2012-02-27
        • 1970-01-01
        • 2011-04-02
        • 2010-12-30
        • 2010-12-29
        • 2017-07-07
        • 1970-01-01
        相关资源
        最近更新 更多