我在我的 python 项目中使用 git-submodule。
子模块项目如下所示:
-submodule_project
- __init__.py
- debug_util.py
- parsing_util
- __init__.py
- parse.py
- consts.py
parse.py
进口debug_util.py
。
这种结构工作正常,因为子模块是一个独立的项目。
我的项目是这样构建的:
-project
- __init__.py
- file1.py
- some_dir
- __init__.py
- main.py
因此,一旦我在项目中使用该子模块作为 git 子模块,
parse.py
就会引发ImportError
。一旦运行导入 debug_util.py
的行,就会发生这种情况。
只是为了澄清:main.py
导入parse.py
,它导入debug_util.py
你能解释一下我做错了什么吗?有哪些可用的解决方案可以解决这个问题?
这是我的
.gitmodules
文件:
[submodule "submodule_project"]
path = submodule_project
url = ../submodule_project.git
提前感谢大家!
Git 子模块 使用起来非常烦人(至少我上次使用它们时是这样)。我建议不要使用子模块,而只使用 python 自己的依赖管理。因此,您的
submodule_project
将拥有自己独特的名称,并打包在像 myparser-1.2.1
这样的版本中,然后您的主项目将依赖于其 setup.py
中的该包。
git 子模块的问题(来自 git 文档):
git submodule init
来初始化本地配置文件,以及git submodule update
来从该项目中获取所有数据并检查超级项目中列出的相应提交submodule update --init
来重新填充它。git 子模块的问题(我自己的观察):
master
,但它无法正常工作,现在您已经获得了非上游的合并提交。update
和init
一层深的子模块已经够烦人的了,但是如果你的子模块之一也使用子模块怎么办?您也没有提及如何以及在何处从顶级项目设置子模块。如果您从顶级项目粘贴
.gitmodules
文件可能会更有帮助。
我会尝试一下(https://github.com/birdflyi/tst_import)。 onlynone提供的解决方案对我来说是可行且有效的~