【问题标题】:Don't understand cause of this ModuleNotFoundError不了解此 ModuleNotFoundError 的原因
【发布时间】:2019-06-07 03:13:15
【问题描述】:

我的文件结构如下:

└── project    
    ├── __init__.py
    ├── main.py
    └── package1
        ├── __init__.py
        ├── module1 
        └── subpackage
            ├── __init__.py
            └── module2.py

module2 包含一个名为 A 的函数,模块 1 使用代码导入 module2:

from subpackage import module2

直接运行 module1 时可以正常工作,但是当我尝试从 main.py 导入 module1 时,出现错误。 main.py中import语句的代码是

from package1 import module1

这给出了错误

  Traceback (most recent call last):
  File "C:\...\project\main.py", line 1, in <module>
    from package1 import module1
  File "C:\...\project\package1\module1.py", line 1, in <module>
    from subpackage import module2
ModuleNotFoundError: No module named 'subpackage'

我不太明白这里发生了什么,我尝试使用 os.chdir() 将当前工作目录更改为 module1 中的 package2,但这没有效果。在研究了这个问题后,我发现唯一可能与我的问题相关的是绝对导入与相对导入,但更改导入语句并没有影响错误。

【问题讨论】:

  • 您的文件结构中没有package1。
  • 谢谢,打错字了,我在实际项目中有一个package1

标签: python python-3.x package python-import


【解决方案1】:

在您的module1.py 文件中,您需要提供导入文件的完整路径(绝对路径)。因此,如果您想从 main.py 文件运行代码,您需要将 module1.py 中的导入更改为:

from package2.subpackage import module2

或

import package2.subpackage.module2

【讨论】:

  • 谢谢,我遇到了这个解决方案,但认为它失败了,因为直接运行“module2.py”时它不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 2022-01-23
相关资源
最近更新 更多