我刚刚将我的软件包的新版本上传到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呢?
答案 0 :(得分:79)
这是一个很好的问题。我花了很长时间才弄明白。这是适用于我的解决方案:
显然,如果pip
可以找到包的本地版本,pip
会更喜欢本地版本到远程版本。我甚至将我的计算机与互联网断开连接并再次尝试 - 当pip
仍然成功安装包时,甚至没有抱怨,来源显然是本地的。
在我的案例中,真正令人困惑的部分是pip
在pypi找到了新版本,报告了它们,然后继续重新安装旧版本...... arggh。此外,它没有告诉我它在做什么,为什么。
那么我是如何解决这个问题的?
您可以使用pip
标记让-v
给出详细输出...但是还不够。我RTFM-ed帮助,说你可以多次执行-v
次,最多3次,以获得更详细的输出。所以我做了:
pip install -v -v -v <my_package>
然后我浏览了输出。一条线引起了我的注意:
/ tmp / pip-build-root /中的源版本为0.0.11,满足要求&lt; my_package&gt;
我删除了该目录,之后pip
安装了pypi的最新版本。
答案 1 :(得分:24)
尝试使用以下方法再次下载该软件包:
pip install --no-cache-dir --upgrade <package>
答案 2 :(得分:23)
感谢Marcus Smith,作为pip的维护者做了出色的工作,这在2013年4月23日发布的pip版本1.4中得到修复。
此版本changelog的相关信息
修复了与...相关的许多问题(#413,#709,#634,#602和#939) 清理而不是重用构建目录。 (拉#865,#948)
答案 3 :(得分:16)
我发现here pip中存在一个已知错误,如果有一个包含解压缩源的构建目录,它将不会检查版本。我已经在我的麻烦包上检查了这个,并在从build目录中删除了它后,pip安装了所需的版本。
答案 4 :(得分:8)
如果您使用的是某些分发软件包附带的pip
版本(例如Ubuntu python-pip),则可能需要安装较新的pip
版本:
将pip
更新为最新版本:
sudo pip install -U pip
如果是“virtualenv”,请跳过“sudo”:
pip install -U pip
如果您的shell在-bash: /usr/bin/pip: No such file or directory
更新后报告pip
之类的内容,则可能需要执行以下命令:
hash -d pip
现在照常安装你的包:
pip install -U foo
或
pip install foo==package.version.here
答案 5 :(得分:4)
将pika 0.9.5更新为0.9.8也有同样的问题。唯一可行的方法是从tarball安装:pip install https://pypi.python.org/packages/source/p/pika/pika-0.9.8.tar.gz
。
答案 6 :(得分:0)
我发现,如果您使用微版本,则pip似乎无法识别它们。例如,我们无法获取1.9.9.1版本进行升级。
答案 7 :(得分:0)
在我的情况下,使用的python版本(3.4)不满足Django 2.1依赖项要求(python> = 3.5)。
答案 8 :(得分:0)
对于我来说,我必须删除主目录中的.pip
文件夹,然后才能获得多个库的更高版本。请注意,这是在linux上。
pip --version
pip 18.1 from /usr/lib/python2.7/site-packages/pip (python 2.7)
virtualenv --version
15.1.0
答案 9 :(得分:0)
在我的情况下,我正在从Artifactory安装.tar.gz程序包,并对它进行了大量更新。为了覆盖我缓存的Python文件并始终获取/安装最新版本,我能够运行:
pip install --no-cache-dir --force-reinstall <path/to/tar.gz>
您应该看到此内容重新下载了所有必需的文件并进行了安装,而不是使用本地缓存。
答案 10 :(得分:0)
在我的情况下,有人发布了使用python2的软件包的最新版本,因此尝试pip3 install
抓取了一个用python3构建的 的旧版本。
调试时要检查的方便事项:
pip install
声称找不到该版本,请查看pip search
是否可以看到它。-py2-
整天都清晰可见)。pip install --no-cache-dir
,以防pip麻烦询问互联网,因为它已经在本地提供了答案。答案 11 :(得分:0)
我在PyCharm的Git标签下隐藏了未版本化的文件,这些文件是与pip install .
一起安装的,即使我在其他任何地方都没有看到这些文件。
花了很长时间为我找到它,希望将其发布对其他人有所帮助。
答案 12 :(得分:0)
以防其他人在升级 torchtext(或可能是任何其他 torch
库)时遇到麻烦:
虽然 https://pypi.org/project/torchtext/ 声明您可以运行 pip install torchtext
,但我必须通过指定 torch
aka --find-links
来安装它,类似于 -f
:
pip install torchtext===0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
让我恼火的是 PyCharm 向我指出了新版本,但在尝试升级到它时找不到它。我猜想 PyCharm 使用自己的机制来发现新版本。然后,在后台调用 pip
时,它没有找到没有 --find-links
选项的新版本。