我正在开发一个 Python 项目(项目 A),该项目使用 GitHub 中的另一个项目(项目 B)。我不是 Git 专家,所以经过快速研究,我发现我应该使用项目B作为git submodule
.
所以,我cd project_A_root
做了以下事情:
git submodule add project_B
git submodule init
git submodule update
Run Code Online (Sandbox Code Playgroud)
在main.py文件中,我从do_something.py导入了一个方法。
主要.py
from ProjectB.do_something import foo
Run Code Online (Sandbox Code Playgroud)
但是,do_something.py文件从util.py文件导入了一个方法,这就是问题发生的地方。
do_something.py
from util import bar
Run Code Online (Sandbox Code Playgroud)
项目 B是一个子模块,它假定项目 B目录是项目的根目录,因此导入do_something.py中util.py的方法时未指定包,并且出现错误:
ImportError: cannot import name 'bar' from 'util'
Run Code Online (Sandbox Code Playgroud)
相反,它应该像这样导入:
from ProjectB.util import bar
Run Code Online (Sandbox Code Playgroud)
我不确定处理这个问题的最佳方法是什么。我已经手动修复了子模块中的导入,但我无法将这些更改推送到 Git,因为这不是子模块的工作方式,因此如果有人想要克隆Project A,他们也必须手动修复导入。 …