【发布时间】:2015-12-17 06:58:03
【问题描述】:
我正在寻找关于 python 包中 pip 的需求文件中的版本规范的最佳实践、注意事项。
假设一个依赖于其他模块的 python 包。其中大多数都需要最低版本。至少维护者知道代码至少可以工作,例如六个 1.7
现在,可以用不同的方式定义需求:
-
six>=1.7.0该软件已经用这个版本测试过,估计以后的版本也会用到 -
six==1.7.0我们需要确切的版本,包已经过测试。该软件尚未针对该模块的所有未来版本进行测试,因此我们不能保证它适用于这些版本。 -
six==1.9.0我们只是用最新版本测试它并需要它。
我确实不愿要求确切的版本,因为它可能会破坏其他软件包的要求,并且对我来说似乎是不好的做法。另一方面,该包并没有在1.7.0以上的所有版本中进行测试。
关于软件包版本要求和== 与>= 的使用是否有任何指南?
【问题讨论】:
-
保留两个版本:一个指定最低要求
>=并且仅包含直接依赖项(手写),另一个使用针对所有 3rd 方包自动生成的精确测试版本(pip-compile) -
所以我应该建议尽可能安装确切的版本,并且还需要最小版本?推荐的确切版本可以放在
pip -r的需求文件中。但是最低要求怎么处理,放到setuptools的install_requires里? -
不同的用例可能需要不同的解决方案;它不是“非此即彼”:为自己使用确切的版本,以启用可重现的环境。您无法控制在其他环境中可能提供哪些版本——除非您必须(即,如果您知道它在特定版本之前不起作用),否则不要设置任何限制,例如,设身处地为发行版的包维护者:了解(例如,通过访问 CI 站点)测试 1.9.0 的确切版本可能很有用,但最好是您的包支持当前/未来的稳定版本,即
six>=1.7可以。 -
你介意把这个写成答案吗?否则我会自己做,但我认为你的评论基本上就是答案。
-
这是一个很大的话题,评论只是触及表面。您更了解您的特定用例。如果您认为自己找到了解决方案,您可以发布自己的答案 — it is explicitly encouraged
标签: python pip version python-module requirements.txt