【问题标题】:Unusual Python Import Error异常的 Python 导入错误
【发布时间】: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


【解决方案1】:

其中一个原因可能是引发导入错误的第二台机器没有目录的读取权限。请检查目录的权限。

【讨论】:

  • 这是个好主意,但在仔细检查后,第二台机器用户确实拥有所有相关目录的读取权限。
  • 你能做一件事吗?只需编写小代码即可在第二台机器上使用 python 代码在该位置创建文件。如果创建此文件,则必须访问模块。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-27
  • 2020-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多