我确信这个问题可能看起来很愚蠢,但是搜索并没有给我带来太大的结果,所以重定向回复会非常受欢迎。
所以,我有一个嵌套模块的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("..")
但它感觉不对。
解决这个问题的正确方法是什么?
答案 0 :(得分:1)
首先需要正确调用它。更改为src/
并运行:
python -m package_2.module_2_1