【问题标题】:Import does not look into pythonpath when importing personal modules导入个人模块时,Import 不会查看 pythonpath
【发布时间】: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.pyC:\path\to\module\XXX\XXX\__init__.py 吗?如果不是,您可能希望在sys.path 中拥有C:\path\to\modulenot C:\path\to\module\XXX
  • 是的,你是对的。我用C:\path\to\module 替换了C:\path\to\module\XXX,它起作用了。我有点傻,对不起...

标签: python python-import importerror pythonpath


【解决方案1】:

所以实际上有点傻。我应该在 pythonpath 中用C:\path\to\module 替换C:\path\to\module\XXX,因为__ini__.pyC:\path\to\module\XXX 文件夹中。感谢 Giacomo Alzetta 的评论。

【讨论】: