【发布时间】:2021-03-07 07:56:09
【问题描述】:
我在这个网站上阅读了很多关于 git 子模块使用的博客文章和问题,但仍然不知道如何更好地在 python 中使用它们。
我的意思是,如果我有这样的包,管理依赖项的更简单方法是什么:
├── mypkg
│ └── __init__.py
├── setup.py
└── submodules
├── subm1
└── subm2
那么,如果我需要使用“mypkg”作为“top_level_pkg”的子模块怎么办:
├── setup.py
├── submodules
│ └── mypkg
└── top_level_package
└── __init__.py
,我想运行pip install . 并正确解决所有问题(将每个子模块按正确顺序安装到 VENV)。
我尝试过的:
- 使用在子进程中运行的“pip”安装每个子模块。但这似乎是一种 hacky 方式且难以管理 (Unexpected installation of GIT submodule)
- 将“install_requires”与“setuptools.find_packages()”一起使用,但没有成功
- 为每个子模块使用 requirements.txt 文件,但我找不到自动化的方法,因此“pip”可以自动安装所有子模块的所有需求。
理想情况下,我设想每个带有install_requires=['submodules/subm1', 'submodules/submn'] 的子模块都有一个单独的 setup.py 文件,但 setuptools 不支持它。
【问题讨论】:
-
子模块是否有自己的
setup.py?换句话说,它们是 pip 可独立安装的项目吗? -
@sinoroc,是的,完全正确。
-
你试过
install_requires=['subm1 @ submodules/subm1', '...']吗? -
否则你可能根本不需要子模块:
install_requires=['subm1 @ git+https://repo.dev/subm1.git', '...']. -
@sinoroc,不,我什至没有在文档中注意到这种语法。谢谢,我试试看。
标签: python git setuptools