允许“ pip安装”忽略本地版本

时间:2018-07-30 19:09:32

标签: python pip

我正在使用versioneer来管理版本,例如PEP 440

我已将一些版本上载到私有存储库:

  • 0.0.1
  • 0.0.2
  • 0.0.2+0.0.2+18.g5a127f2.dirty

我的问题是我现在使用

pip install mypackage==0.0.2

当我期望获得0.0.2+0.0.2+18.g5a127f2.dirty时,我会得到0.0.2版本。

有没有办法让pip忽略“本地版本”而只安装确切的版本,而无需我上传到不同的索引(即分段和稳定)?

编辑:

我尝试使用--no-cache-dir-I标志,但是问题仍然存在; pip更喜欢0.0.2+版本而不是0.0.2版本。

其他编辑:

我正在使用pip 18.0和Python 2.7

1 个答案:

答案 0 :(得分:0)

根据distutils

  

在发布号之后,您可以具有发布前或发布后的标签。预发行标签使该版本比附加其版本的版本更旧。因此,版本2.4比版本2.4c1更新,后者又比版本2.4b1或2.4a1更新。发布后标记使该版本比附加其的版本更新。因此,像2.4-1和2.4pl3这样的修订版比2.4更新,但比2.4.1(具有更高的发行版)要旧。

因此,虽然不是我正在寻找的解决方案(下面有完整答案),但它看起来像这样:

pip install "mypackage<=0.0.2"

distutils关于发布后的内容似乎与PEP440中指定的内容不符

  

[示例:...] == 3.1:专门针对3.1版(或3.1.0版),不包括所有预发行版,后发行版,开发版本和任何3.1.x维护版本。

...但是对于如何确定某个东西是“发布”还是“发布”,我还是有点模糊。

尽管如此,我的问题的答案似乎是:使用Aribitrary Equality

pip install mypackage===0.0.2

这完全为我提供了指定的版本,而忽略了具有任何pre / post / dev详细信息的版本。