【发布时间】:2023-10-19 11:34:01
【问题描述】:
我通过在包含我的 python 脚本的 C:\path\to\module\XXX 文件夹中设置一个 __init__.py 文件,在我的计算机上构建了我自己的名为“XXX”的包。然后我手动将C:\path\to\module\XXX 添加到我的pythonpath 中。当我在 cmd 提示符下运行 python 并尝试导入模块时,它失败了。当我打印sys.path 时,它包含C:\path\to\module\XXX。如果我尝试加载其他一些个人模块,则会出现同样的问题,但是当我尝试加载不是我自己的模块时,使用pip(即numpy)安装它可以完美运行。所以我的猜测是,由于某种原因,python 不再查看我的 pythonpath 来加载模块。
我在 Windows 7 上使用带有虚拟环境的 python 3.6.5 的 anaconda。Python 通过 conda-forge repo 与 anaconda 一起安装。
我已经用多种方法测试了这个问题,首先使用 Pycharm 运行下面的脚本,然后使用 Spider。然后我使用 anaconda 提示符运行命令,首先手动激活我的虚拟环境。最后,我在 DOS 提示符下使用 python 运行了这些命令。不管怎样,结果哪里都一样。在我的虚拟环境中安装 fbprohete 后才出现此错误。在此之前,我能够导入我的模块。我试图删除该模块,但问题仍然存在。在安装 fbprohet 的过程中会出现很多混乱。安装后,我运行了一个 conda clean 命令来清理环境,但它没有帮助。我怀疑现在有些东西已经损坏,但我想避免重新安装所有东西。如果你知道去哪里看,特别是哪个模块应该被破坏,我会很高兴知道更多。
import sys
sys.path
['', 'C:\path\to\module\XXX', ...]
import XXX
ModuleNotFoundError: No module named 'XXX'
使用上面的脚本,我希望模块能够正确加载,因为包的路径在 pythonpath 中,__init__.py 在文件夹 C:\path\to\module\XXX 中
谢谢!
【问题讨论】:
-
sys.path包含 python 查找 into 以搜索模块的目录。您的系统上有C:\path\to\module\XXX\XXX.py或C:\path\to\module\XXX\XXX\__init__.py吗?如果不是,您可能希望在sys.path中拥有C:\path\to\module和notC:\path\to\module\XXX -
是的,你是对的。我用
C:\path\to\module替换了C:\path\to\module\XXX,它起作用了。我有点傻,对不起...
标签: python python-import importerror pythonpath