ModuleNotFoundError:没有名为“__main__.xxxx”的模块; '__main__' 不是包

新手上路,请多包涵

目前正在尝试在 Python3 中工作并使用绝对导入将一个模块导入另一个模块,但我收到错误 ModuleNotFoundError: No module named '__main__.moduleB'; '__main__' is not a package 。考虑这个项目结构:

 proj
    __init__.py3 (empty)
    moduleA.py3
    moduleB.py3

模块A.py3

 from .moduleB import ModuleB
ModuleB.hello()

模块B.py3

 class ModuleB:
    def hello():
        print("hello world")

然后运行 python3 moduleA.py3 给出错误。这里需要改什么?

原文由 mpseligson 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 659
1 个回答

.moduleB 是相对导入。 Relative 仅在先导入或加载父模块时才有效。这意味着您需要将 proj 导入当前运行时环境中的某处。当您使用命令 python3 moduleA.py3 时,它没有机会导入父模块。你可以:

  • from proj.moduleB import moduleB 或者
  • 您可以创建另一个脚本,比方说 run.py ,调用 from proj import moduleA

祝你在 Python 的神奇土地之旅中好运。

原文由 Md. Sabuj Sarker 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进