我在使用
假设我有三个项目,
对于包
我不太喜欢在每个软件包中存储
正确和推荐的处理方式是什么? 补充说明:我忘了提到这些软件包(
pip
和 setuptools
进行 Python 打包时遇到了一些困难,需要理解和实现一些细节。假设我有三个项目,
A
、B
和 C
,每个项目都是自己的包并托管在自己的代码库中。它们还相互依赖,即 A
被 B
导入,而 B
被 C
导入。每个包都有一组 直接 依赖项(即直接导入的其他包)和一组 间接 依赖项(即由直接依赖包导入的包)。这些依赖关系是一个图,而不是树形结构。对于包
A
, setup.py 应该只包含直接依赖的包吗?对于包 B
也是一样吗?当我安装 C
时,我注意到 B
被安装了,但是没有安装 A
。我想这是因为 A
是 C
的间接依赖。我不太喜欢在每个软件包中存储
pip freeze
的想法(缺乏灵活性且存在冲突),但看起来 pip
无法递归解析依赖关系图(请参见此处)。snakebasket
项目试图解决这个问题,但现在已经过时。dependency-links选项已被弃用。正确和推荐的处理方式是什么? 补充说明:我忘了提到这些软件包(
A
、B
、C
)都不在官方的PyPi仓库中,而是存在私人的Github仓库中。因此,例如B
的setup.py包含以下内容。install_requires=(
…,
A==1.0.0,
…,
)
dependency_links=[
f"https://{github_token}@github.com/repo/A/archive/v1.0.0.tar.gz#egg=A-1.0.0",
],
而 C
包含了一个类似于包 B
的设置。