目前尝试在Python3中工作,并使用绝对导入将一个模块导入另一个模块,但出现错误ModuleNotFoundError: No module named '__main__.moduleB'; '__main__' is not a package
。考虑以下项目结构:
proj
__init__.py3 (empty)
moduleA.py3
moduleB.py3
moduleA.py3
from .moduleB import ModuleB
ModuleB.hello()
moduleB.py3
class ModuleB:
def hello():
print("hello world")
然后运行
python3 moduleA.py3
给出错误。这里需要更改什么? 最佳答案
.moduleB
是一个相对导入。相对仅在先导入或加载父模块时才起作用。这意味着您需要在当前运行时环境中的某处导入proj
。使用python3 moduleA.py3
命令时,没有机会导入父模块。您可以:
from proj.moduleB import moduleB
或run.py
,以调用from proj import moduleA
祝您踏入Python的那片好运。