Python包要求:使用版本说明符==和> =

时间:2015-09-20 14:42:07

标签: python pip version python-module requirements.txt

我正在寻找有关python包中pip的需求文件中的版本规范的最佳实践,不做和不做。

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

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

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

我确实有一个禁止要求一个确切的版本,因为它可能会破坏其他软件包的要求,对我来说似乎是不好的做法。另一方面,该套件尚未经过1.7.0以上六种版本的测试。

是否有关于包版本要求和==>=的使用的指导原则?

1 个答案:

答案 0 :(得分:2)

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

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

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