当前位置: 首页 > 面试题库 >

为什么pip安装了旧版本的软件包?

柯伟志
2023-03-14
问题内容

我刚刚将软件包的新版本上传到PyPi(1.2.1.0-r4):我可以下载egg文件并使用easy_install进行安装,并且该版本可以正确检出。但是,当我尝试使用pip进行安装时,它将安装版本1.1.0.0。即使我明确指定要使用的版本,也会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可以找到该html" target="_blank">程序包pip的本地版本,则将首选本地版本而不是远程版本。我什至断开了计算机与Internet的连接,然后再次尝试了-当pip仍然成功安装该软件包并且甚至没有抱怨时,该来源显然是本地的。

就我而言,真正令人困惑的部分是pip在pypi上找到了较新的版本,并进行了报告,然后继续进行并重新安装了较旧的版本…
arggh。而且,它没有告诉我它在做什么,为什么。

那我怎么解决这个问题呢?

您可以pip使用该-v标志来提供详细的输出…但是一个还不够。我使用RTFM编辑该帮助,该帮助说您可以执行-v多次,最多3倍,以获得更详细的输出。所以我做了:

pip install -vvv <my_package>

然后我查看了输出。一行引起了我的注意:

/ tmp / pip-build-root /中的源版本为0.0.11,满足要求

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



 类似资料:
  • 问题内容: 使用pip,可以确定当前安装了哪个版本的软件包? 我知道,但是我想知道是否有类似的东西。如果不是,最好的方法就是告诉我当前使用的版本。 问题答案: 从pip 1.3开始,有一个命令。 在旧版本,并应做的工作很好。

  • 我明白将安装package.json.中定义的节点模块版本,我不明白为什么它试图安装较旧的版本4.9.1,而不是安装4.11.0或更高版本。正因为如此,我得到了下面的错误。有人能帮我解决这个问题吗? 无法下载“https://github.com/sass/node-sass/releases/download/v4.9.1/win32-ia32-67_绑定节点“: 找不到HTTP错误404 环境

  • 问题内容: 在我的应用程序中,我想使用: ,这需要 ,这需要 如何安装带有pip的多个版本来处理这种情况? 问题答案: 点不会帮助您。 您可以告诉它安装特定版本,但是它将覆盖另一个版本。另一方面,使用两个virtualenvs将使您在同一台计算机上安装两个版本,但不能同时使用它们。 最好的选择是手动安装这两个版本,方法是将它们以不同的名称放在Python路径中。 但是,如果您的两个库期望它们具有相

  • 问题内容: 我正在尝试使用通过该选项创建的新virtualenv安装MySQL_python适配器的1.2.2版本。PyPi中显示的当前版本是1.2.3。有没有办法安装旧版本?我发现有一篇文章指出应该这样做: 但是,安装后,它仍显示在站点包中。这是此软件包专用的问题,还是我做错了什么? 问题答案: TL; DR: (即) 首先,我发现您要执行的操作有两个问题。由于您已经安装了版本,因此应该卸载当前

  • 问题内容: 我正在尝试使用通过该–选项创建的新virtualenv安装MySQL_python适配器的1.2.2版本。PyPi中显示的当前版本是1.2.3。有没有安装旧版本的方法?我发现有一篇文章指出应该这样做: 但是,安装后,它仍显示在站点包中。这是此软件包专用的问题,还是我做错了什么? 问题答案: TL; DR: (即) 首先,我发现你要执行的操作有两个问题。由于已经安装了版本,因此应该卸载当

  • 在我维护的包中,有一个包含一个未固定的依赖项。安装我的软件包在本地显示的行为与在Travis上显示的行为不同: 在本地运行包上的将导致安装Pandas版本。 在Travis配置项内运行相同的将导致安装Pandas版本(指向作业的链接)。 在这两种情况下,pip和setuptools的版本是相同的(,)。 我没有指定显式索引(而且在本地我没有全局pip配置),所以我假设两者都应该使用标准PyPI索引