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

标签 python pip pypi python-packaging requirements.txt

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

即:

1.2.3-beta 1.2.3

在消费项目上,他们不能给我任何具体的标准,说明他们何时想要使用 betarelease 包。我们有 CI,但没有任何明确的“何时”我不能支持两个单独的 pip 提要,因为它们可能会翻转。所以我建议利用需求文件中的版本范围语法,这样他们就可以在 checkin 期间指定他们想要的内容。他们从来没有做过这样的事情,我基本上是一个 python 菜鸟。是否可以过滤预发布标签?即

lib == 1.*.*-* 会选择一个 beta 包吗?

lib == 1.*.*, !=1.*.*-* 会选择一个 release 包并确保排除任何 beta 包?

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

最佳答案

默认 pip 不会安装 prereleases ,比如 1.0.0.b1

要启用预发布安装,您可以使用 --prepip 标记。

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

If a Requirement specifier includes a pre-release or development version (e.g. >=0.0.dev0) then pip will allow pre-release and development versions for that requirement.

因此,在您的 requirements.txt 文件中,您将拥有如下内容:

package_a>=1.2.3       # will not install pre-releases
package_b>=1.2.3.dev0  # will install pre-releaes 

关于python - pip 依赖项可以排除或包含在语义预发布标签中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62765000/

相关文章:

python - 在 Python 中,dict.pop(a,b) 是什么意思?

python - 在 python 中有类似函数的回推吗?

python - 使用 Python 将数据发布到 Firebase

python - Golang 中 UUID4 的整数表示

pip - 由于(看似)循环依赖性,无法通过 Pip 安装 AWS 客户端

python - 根本找不到任何发行版,即使我最近发布了这个包

python - 如何告诉 tox 使用 PyPI 镜像来安装包?

python - 为 virtualenv 和 pip 维护不同的需求文件

python pip install "mkl-fft"无法安装

python - 从 PyPI 安装我的 sdist 将文件放在意想不到的地方