我正在使用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
答案 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详细信息的版本。