【问题标题】:Python Errors when importing module from child directory从子目录导入模块时出现 Python 错误
【发布时间】:2019-09-07 03:05:45
【问题描述】:

我有一个具有这种文件结构的项目:

f1
  f2
    __init__.py
    a.py
    b.py
  main.py

main.py

from f2 import a
...

a.py

import b
...

b.py

print('Hello World!')
...

当我运行 main.py 时,我从 a.py 收到一个导入错误,说“ImportError: No module named 'b'”但是当我运行 a.py 时,它按预期运行。

f2 最初是一个 github 子模块,repo 名称带有破折号。我认为这可能是问题所在,所以我将 f2 更改为一个目录并复制了文件。这并没有解决我的问题。

我也尝试过使用 importlib。

我希望 a.py 能够导入 b.py,因为当我直接运行 a.py 时它能够导入。

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    那是因为a 认为b 是一个独立的模块,所以它在PYTHONPATH 目录中查找它,包括当前文件夹。

    但是,当您从main 运行时,b 不再在当前文件夹(main 的文件夹)中,因此a 找不到它。

    要解决此问题,请将a.py 中的导入更改为from . import b,这表明b.py 在相同 包中,并相应地执行相对导入。

    【讨论】:

      猜你喜欢
      • 2022-11-04
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 2015-07-23
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      • 2021-03-16
      相关资源
      最近更新 更多