为什么我应该在 setup.py 和requirements.txt 中复制我的依赖项?

big*_*g-o 5 python pip

我最近编写并发布了一个 python 包 - 这是我第一次向 PyPi 发布一些东西,所以我仍在学习。

我一直认为将您的需求同时存储在 setup.py 和requirements.txt 中似乎很疯狂,所以我让 setup.py 只读取requirements.txt 文件: https: //github.com/big- o/cherrypicker/blob/bf7382cbdabfc6608e3aec388903db32a917314c/setup.py#L32。不过,我从未见过任何其他项目这样做,这让我建议有充分的理由不这样做。

谁能向我解释为什么我不应该这样做(或者为什么这不是问题)?

我见过其他解释说 setup.py 用于安装您的软件包,而requirements.txt 用于设置您的环境。但我看不出有什么区别 - 依赖关系是相同的,并且永远如此。如果我需要一组不同的包,例如用于开发的额外测试包,我可以在 setup.py 的 extras_require 部分中单独指定。

编辑:我明白 setup.py 和requirements.txt 的两个不同角色是什么,我的问题是为什么两者需要独立而不是共享两者之间的公共依赖关系列表?