Python 项目相关模块导入

Python project relative modules import

我敢肯定这个问题可能看起来很愚蠢,但四处搜索并没有给我带来太多结果,因此非常欢迎重定向到响应。

所以,我有一个带有嵌套模块的 Python 项目:

src
 |-package_1
  |-__init__.py
  |-module_1_1
  |-module_1_2
 |-package_2
  |-__init__.py
  |module_2_1
  |module_2_2
 |-main_module
 |-__init__.py

我从 main_module 中导入 package_2 的内容,并从 package_2 中的模块中导入 package_1 中的内容,这些模块具有类似的语句:

(main_module)

from package_2.module_2_1 import foo

(module_2_1)

from package_1.module_1_1 import bar

一切正常只要我运行

Python main_module

但是一旦我尝试 运行,例如单独使用 module_2_1 的函数

Python module_2_1,

如果失败并显示无法解析以下导入的消息:

from package_1.module_1_1 import bar

据我了解,Python 不知道应该去哪里寻找 package_1,因为它不知道项目根目录在哪里。

作为补救措施,我目前将以下行添加到所有内部模块以正确解析导入:

if __name__ == "__main__":
    import os
    os.chdir("..")

但就是感觉不对。

解决这个问题的正确方法是什么?

首先您需要正确调用它。更改为 src/ 和 运行:

python -m package_2.module_2_1