【发布时间】:2017-09-18 17:54:34
【问题描述】:
在将其标记为重复之前,请阅读整个问题,这不是通常的 sys.path 导入错误。
这是我要导入的模块的目录结构
root
|_moduleDir1
| |_ myModule1.py
| |_ __init__.py
|_ moduleDir2
|_ myModule2.py
|_ __init__.py
我正在使用 2 台不同的机器。我的脚本在一个上运行良好,而在另一个上出现导入错误。起初我认为这只是一个环境问题,但我认为还有其他事情发生。当我运行导入 myModule1.py 的脚本时,
import moduleDir1.myModule1
在失败的机器上,它会引发以下导入错误。
ImportError: No module named myModule1
我不认为这是 PATH 问题或 sys.path 问题的原因是我已将根目录添加到适当的环境变量中,并且在添加时
import moduleDir2.myModule2
在脚本中的 myModule1 导入之上,它不会引发导入错误,因此我知道 root 位于 sys.path 中,否则它们都会引发错误。此外,我认为 init.py 不是问题,因为它在另一台机器上运行良好。两台机器都运行 Windows 10。
我很困惑,我已经搜索和测试了几个小时,但没有运气。我能找到的只是与 init.py 或 sys.path 有问题的帖子,而这些不是我的问题的正确解决方案。任何关于为什么我可能会在一个模块而不是另一个模块在同一父目录下时遇到导入错误的任何建议或想法都将不胜感激。
【问题讨论】:
-
请显示尝试导入
myModule1的代码,并显示完整的错误消息。 -
尝试
import moduleDir1然后print(moduleDir1.__file__)。输出是你期望的吗?如果在sys.path之前有另一个名为moduleDir1的目录,或者一个名为moduleDir1.py的文件,则会被导入,并且如果它没有名为myModule1的子模块,那么您将收到此错误。 -
你一针见血!在系统的其他地方还有另一个名为相同事物的模块,这就是正在导入的模块。非常感谢!你为我节省了多少时间!
标签: python import module importerror