首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么pip要安装我的包的旧版本?

为什么pip要安装我的包的旧版本?
EN

Stack Overflow用户
提问于 2013-01-31 09:46:33
回答 14查看 48.8K关注 0票数 91

我刚刚将我的包的新版本上传到PyPi (1.2.1.0-r4):我可以下载egg文件并使用easy_install安装它,并且版本检查正确。但是当我尝试使用pip进行安装时,它会安装1.1.0.0版。即使我显式地指定了使用pip install -Iv tome==1.2.1.0-r4进行pip的版本,我也会得到这样的消息:Requested tome==1.2.1.0-r4, but installing version 1.1.0.0,但我不明白为什么。

我再次与parse_version确认1.2.1的版本字符串大于1.1.0的版本字符串,如下所示:

代码语言:javascript
复制
>>> from pkg_resources import parse_version as pv
>>> pv('1.1.0.0') < pv('1.2.1.0-r4')
True
>>>

那么,你知道为什么它选择安装1.1.0吗?

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2013-06-18 02:09:28

这是一个很好的问题。我花了好长时间才弄明白。这是对我有效的解决方案:

显然,如果pip可以找到包的本地版本,pip会更喜欢本地版本而不是远程版本。我甚至断开了我的计算机与互联网的连接,并再次尝试--当pip仍然成功地安装了软件包,甚至没有任何抱怨时,来源显然是本地的。

在我的例子中,真正令人困惑的是,pippypi上找到了更新的版本,报告了它们,然后继续重新安装了旧版本……阿格。而且,它也没有告诉我它在做什么,为什么。

那么我是如何解决这个问题的呢?

您可以使用-v标志让pip给出详细的输出...但是一个还不够。我查看了帮助,它说你可以多次执行-v,最多3倍,以获得更详细的输出。所以我就这么做了:

代码语言:javascript
复制
pip install -vvv <my_package>

然后我看了看输出。有一句话引起了我的注意:

tmp/pip-

-root/中的构建根源代码的版本为0.0.11,该版本满足要求

我删除了该目录,之后pip安装了pypi的最新版本。

票数 103
EN

Stack Overflow用户

发布于 2017-05-17 02:18:53

尝试使用以下命令再次强制下载该包:

代码语言:javascript
复制
pip install --no-cache-dir --upgrade <package>
票数 49
EN

Stack Overflow用户

发布于 2013-08-07 22:22:26

多亏了Marcus Smith,他作为pip的维护者做了令人惊叹的工作,这个问题在2013-07-23发布的pip 1.4版本中得到了修复。

此版本的changelog中的相关信息

修复了许多与清理和不重用构建目录相关的问题(#413、#709、#634、#602和#939)。(拉动#865,#948)

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14617136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档