我在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
先谢谢大家!
答案 0 :(得分:2)
Git Submodules非常讨厌(至少他们是我上次和他们一起玩的时候)。我建议不要使用子模块,只需使用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
文件,则可能会更有帮助。