如何解决Python Git子模块的依赖性

时间:2019-07-09 19:28:07

标签: python git

我在单独的git仓库中有Python项目A,B和C。他们每个人都使用一些类似的代码,所以我想将代码重构到一个单独的共享存储库中。该存储库中的Python代码实际上只是一些帮助程序类。我可以将这些文件作为git子模块包含在项目A,B和C的此新存储库中。

我现在遇到的问题是,如果git子模块中的代码具有外部pip依赖关系,那么顶级项目除了如何解决这些依赖关系外,又如何解决这些依赖关系?

也许git-submodules在这里不是正确的方法,但是我真的想避免为3-4个轻量级模块/类设置一个私有pypi服务器。

1 个答案:

答案 0 :(得分:1)

  

我现在遇到的问题是,如果git子模块中的代码具有外部pip依赖关系,那么顶级项目除了如何解决这些依赖关系外,又如何解决这些依赖关系?

像往常一样,在子模块存储库中,将依赖项包含在requirements.txt中。

然后在您的文档中,请确保在安装A,B或C之前包括有关安装子模块软件包的说明。

例如,假设包A为foo,子模块为bar。

tree
.
└── foo
    ├── bar
    │   ├── bar
    │   │   └── __init__.py
    │   ├── requirements.txt # external pip dependencies
    │   └── setup.py
    ├── foo
    │   └── __init__.py
    ├── requirements.txt
    └── setup.py # include 

4 directories, 6 files

然后在您的文档中可以包含类似的内容


安装Foo

# Initialize submodule(s)
git submodule update --init --recursive

# First install bar
cd bar

# Resolve any dependencies for bar
pip install -r requirements.txt

# Install bar
python setup.py install

# Now install foo
cd ..

# Resolve any other dependencies for foo
pip install -r requirements.txt

# Install foo
python setup.py install

注意:应该对所有三个存储库(例如A,B和C)执行此操作。


资源: