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

swi*_*cks 5 python git

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

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

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

Luc*_*age 3

\n

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

\n
\n\n

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

\n\n

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

\n\n

举个例子,假设包 A 是 foo,子模块是 bar。

\n\n
tree\n.\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foo\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bar\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bar\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __init__.py\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 requirements.txt # external pip dependencies\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 setup.py\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foo\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __init__.py\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 requirements.txt\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 setup.py # include \n\n4 directories, 6 files\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后在你的文档中你可以包含这样的内容,

\n\n
\n\n

Foo 的安装

\n\n
# Initialize submodule(s)\ngit submodule update --init --recursive\n\n# First install bar\ncd bar\n\n# Resolve any dependencies for bar\npip install -r requirements.txt\n\n# Install bar\npython setup.py install\n\n# Now install foo\ncd ..\n\n# Resolve any other dependencies for foo\npip install -r requirements.txt\n\n# Install foo\npython setup.py install\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
\n\n

资源:

\n\n\n