bri*_*rns 71 python pip setuptools
我刚刚将我的软件包的新版本上传到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
>>>
Run Code Online (Sandbox Code Playgroud)
所以任何想法为什么选择安装1.1.0而不是?
Mat*_*ick 83
这是一个很好的问题.我花了很长时间才弄明白.这是适用于我的解决方案:
显然,如果pip
可以找到本地版本的软件包,pip
则更喜欢本地版本的远程版本.我甚至将我的电脑从互联网上断开并再次尝试 - 当pip
仍然成功安装包装,甚至没有抱怨时,来源显然是本地的.
在我的案例中,真正令人困惑的部分是pip
在pypi上找到了新版本,报告了它们,然后继续重新安装了旧版本...... arggh.此外,它没有告诉我它在做什么,为什么.
那我怎么解决这个问题呢?
您可以pip
使用-v
标志来提供详细输出......但是还不够.我RTFM-ed帮助,说你可以做-v
多次,最多3次,以获得更详细的输出.所以我做了:
pip install -vvv <my_package>
Run Code Online (Sandbox Code Playgroud)
然后我查看了输出.一条线引起了我的注意:
/ tmp/pip-build-root /中的源版本为0.0.11,满足要求<my_package>
我删除了该目录,之后pip
安装了pypi的最新版本.
Iac*_*hus 30
尝试使用以下命令再次下载该软件包:
pip install --no-cache-dir --upgrade <package>
Run Code Online (Sandbox Code Playgroud)
Pio*_*ost 24
感谢Marcus Smith,他作为pip的维护者做了出色的工作,这是在2013年4月23日发布的pip版本1.4中修复的.
来自此版本的更改日志的相关信息
修复了与清理和不重用构建目录相关的许多问题(#413,#709,#634,#602和#939).(拉#865,#948)
小智 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
小智 6
将 pika 0.9.5 更新到 0.9.8 时遇到了同样的问题。唯一的工作方法是从 tarball 安装:pip install https://pypi.python.org/packages/source/p/pika/pika-0.9.8.tar.gz
.