pip 依赖项可以排除或包含在语义预发布标签中吗?

use*_*571 4 python pip pypi requirements.txt python-packaging

我的开发人员希望能够将库发布为“测试版”或“发布版”。

IE:

1.2.3-beta 1.2.3

在消费项目中,他们无法给我任何关于何时想要使用betarelease包的具体标准。我们有 CI,但没有任何明确的“何时”,我无法支持两个单独的点馈送,因为它们可能会失败。因此,我建议利用需求文件中的版本范围语法,这样他们就可以在签入期间指定他们想要的内容。他们从来没有做过这样的事情,而我基本上是一个Python菜鸟。是否可以过滤预发布标签?IE

lib == 1.*.*-*beta包裹吗?

lib == 1.*.*, !=1.*.*-*提取release包裹并确保排除任何beta包裹吗?

我会自己尝试我的理论,但我对 python 不太了解,无法在本地模拟某种示例库,而且他们太忙了,无法研究它。

Dus*_*ram 6

默认情况下pip不会安装预发行版,例如1.0.0.b1

要启用预发行版的安装,请使用--pre带有 的标志pip

您还可以使用预发布版本说明符来强制pip考虑各个包的预发布,而无需使用--pre. 来自https://pip.pypa.io/en/stable/reference/pip_install/#pre-release-versions

如果需求说明符包含预发布或开发版本(例如>=0.0.dev0),则 pip 将允许该需求的预发布和开发版本。

所以在你的requirements.txt文件中,你会有类似的内容:

package_a>=1.2.3       # will not install pre-releases
package_b>=1.2.3.dev0  # will install pre-releaes 
Run Code Online (Sandbox Code Playgroud)