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
我敢肯定这个问题可能看起来很愚蠢,但四处搜索并没有给我带来太多结果,因此非常欢迎重定向到响应。
所以,我有一个带有嵌套模块的 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