关于python:如何正确导入包

How to import package properly

本问题已经有最佳答案,请猛点这里访问。

为了便于管理,我有一些项目要拆分。因此,我将不同应用程序使用的一些部分移动到模块中,而不是复制周围的文件。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/projects
  /module1
    __init__.py
    run_tests.py
    /docs
      ...
    /module1
      __init__.py
      module1.py
    /tests
      __init__.py
      module1_test.py
  /module2
    ...

现在我给自己安排了"主应用程序"目录,以同样的方式:

1
2
3
4
5
6
7
8
9
10
11
12
/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文件中编写适当的导入语句。因为模块1中只有一个类,所以我不想使用hugh import module1.module1.module1.ModuleClass,所以应该将ModuleClass导入到"模块级",这样我就可以执行类似于import module1.ModuleClass的操作。我想我必须调整__init__.py文件,但我所做的一切都破坏了测试或整个导入。

如果有任何帮助,我会非常感激和抱歉我的解释不好,我不是一个母语者…


好的,我自己找到了解决办法。和往常一样,这是非常直接的。

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

1
from .module1 import ModuleClass

如果有人最终会遇到同样的情况,我会把这个放在这里以备将来参考。

干杯