我刚刚将我的包的新版本上传到 PyPi (1.2.1.0-r4):我可以下载 Egg 文件并使用 easy_install 安装它,并且版本检查正确。但是当我尝试使用 pip 安装时,它会安装版本 1.1.0.0。即使我明确指定 pip 的版本pip install -Iv tome==1.2.1.0-r4
,我收到此消息:Requested tome==1.2.1.0-r4, but installing version 1.1.0.0
,但我不明白为什么。
我仔细检查了parse_version
并确认 1.2.1 上的版本字符串大于 1.1.0 上的版本字符串,如下所示:
>>> from pkg_resources import parse_version as pv
>>> pv('1.1.0.0') < pv('1.2.1.0-r4')
True
>>>
那么知道为什么它选择安装 1.1.0 吗?
这是一个很好的问题。我花了很长时间才弄清楚。这是适合我的解决方案:
显然,如果pip
可以找到该包的本地版本,pip
会更喜欢本地版本而不是远程版本。我什至断开了计算机与互联网的连接并再次尝试 - 当pip
仍然成功安装了软件包,甚至没有抱怨,来源显然是本地的。
就我而言,真正令人困惑的部分是pip
找到了较新的版本pypi,报告了他们,然后继续重新安装旧版本......arggh。而且,它没有告诉我它在做什么以及为什么。
那么我是如何解决这个问题的呢?
你可以得到pip
使用提供详细输出-v
旗帜......但一个还不够。我 RTFM 编辑了帮助,其中说你可以做-v
多次(最多 3 倍)以获得更详细的输出。所以我做了:
pip install -vvv <my_package>
然后我查看了输出。一行字引起了我的注意:
/tmp/pip-build-root/ 中的源版本为 0.0.11,满足要求
我删除了该目录,之后pip
从 pypi 安装了最新版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)