ModuleNotFoundError 即使 __init__.py

ModuleNotFoundError even with __init__.py

我有一个结构如下的项目:

.
└── project
     ├── assignment01
     |      ├── __init__.py
     |      └── old_file.py
     |
     ├── assignment02
     |      ├── __init__.py
     |      └── new_file.py
     └── __init__.py

我需要使用我在文件 new_file.py 的第一个作业中实现的函数,我按如下方式导入:

from assignment01 import old_file as assgn1

目前,我正在 PyCharm 中编程,IDE 没有显示任何警告或问题。它甚至自动完成上面的代码。尽管如此,当我想在命令行中 运行 new_file.py 时,它会抛出以下错误:

ModuleNotFoundError: No module named 'assignment01'

您需要通过将 __init__.py 放入 project 然后执行 from ..assignment01 import old_file 来使两个作业成为一个包的一部分。您将需要从上面调用您的代码 project (python -m project.assignment1.newfile.main) ,因此 python 拿起外包装并能够解析 ..。或者您可以省略 .. 并直接从 project 调用,如其他答案中所述。无论如何,我们的想法是将 assignment0 放在 python 可以 找到 并导入的地方。

或者您需要将 project 添加到您的 sys.path:

import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).parent.parent))

您当前的导入失败,因为 python 正在 assignment02 中查找 assignment01,当然,失败了。

project 目录中添加另一个 __init__.py

此外,使用您的代码,从您的 project 目录中尝试 运行 new_file.py

示例:

python assignment02/new_file.py