目前尝试在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的那片好运。

    10-06 11:55