如何正确导入包

How to import package properly

我尝试拆分一些项目以便于管理。因此,我将不同应用程序使用的一些部分移动到模块中,而不是到处复制文件。

现在我的模块有以下结构(每个模块都有自己的文档和测试):

/projects
  /module1
    __init__.py
    run_tests.py
    /docs
      ...
    /module1
      __init__.py
      module1.py
    /tests
      __init__.py
      module1_test.py
  /module2
    ...

现在我得到了 "main app" 以相同方式布置的目录:

/projects
  run_app.py
  run_tests.py
  /docs
    ...
  /app
    __init__.py
    app.py
    module1 <-- Link to the module1 repository
  /tests
    __init__.py
    app_tests.py

目前我所有的 __init__.py 文件都是空的,我不知道如何在我的 app.py 文件中编写正确的导入语句。由于 module1 中只有一个 class 我不想要 hugh import module1.module1.module1.ModuleClass 所以应该将 ModuleClass 导入到 "module level" 这样我就可以做类似 import module1.ModuleClass。我想我必须调整 __init__.py 文件,但我所做的一切都破坏了测试或整个导入。

任何帮助将不胜感激,对于我的糟糕解释我深表歉意我不是母语人士...

好的,我自己找到了解决方案。一如既往,它非常简单。

我只需要将所有 __init__.py 文件中的以下行递归添加到模块的顶部。

from .module1 import ModuleClass

如果有人可能遇到同样的情况,我会把它留在这里以供将来参考。

干杯