3

我正在寻找关于 python 包中 pip 的需求文件中的版本规范的最佳实践、注意事项和注意事项。

假设一个依赖于其他模块的 python 包。其中大多数都需要最低版本。至少维护人员知道该代码至少可以使用,例如六个 1.7

现在,可以用不同的方式定义需求:

  • six>=1.7.0该软件已在此版本中进行了测试,并且假设它也将与未来版本一起使用
  • six==1.7.0我们需要确切的版本,该软件包已经过测试。该软件尚未针对该模块的所有未来版本进行测试,因此我们不能保证它适用于这些版本。
  • six==1.9.0我们只是用最新版本测试它并要求它。

我确实需要一个确切的版本,因为它可能会破坏其他包的要求,并且对我来说似乎是不好的做法。另一方面,该软件包尚未在 1.7.0 以上的所有版本中进行测试。

是否有关于包版本要求和==反对的使用指南>=

4

1 回答 1

3

根据我作为开发人员、打包人员(分发包维护人员)和软件维护人员的经验,我得出以下解释/建议:

  • install_requires:pkg_resources 在运行时(!)检查 install_requires 中列出的依赖项。它们是硬依赖。它们可以(应该?)包含所需的最低版本号,但不是确切的版本,除非给出了很好的理由。更多受支持的版本通常更有用,最大版本数通常是一场噩梦。
  • extras_requires列出可选要求(建议),核心功能不需要这些要求,但对于一些附加功能,或者是可选的,以增强功能。如果一个软件没有它就不能正常工作,它应该去 install_requires。
  • requirements.txt一些维护者将其设置为与 install_requires 相同,而另一些则根本不使用它。它可用于推荐经过最佳测试的特定版本的需求。这当然对于打包根本没有用,但对于 virtualenvs 和类似的设置。

打包者通常不使用 requirements.txt 中的信息,而是使用 install_requires 和 extras_requires 中的信息。

于 2017-09-17T16:04:24.910 回答