我们的本地python软件包服务器包含以下文件:
subprocess32-3.2.7-cp27-cp27mu-linux_x86_64.whl
subprocess32-3.5.0-cp27-none-linux_x86_64.whl
subprocess32-3.5.0rc1-cp27-none-linux_x86_64.whl
subprocess32-3.5.0.tar.gz
subprocess32-3.5.2.tar.gz
文件subprocess32-3.5.2.tar.gz是新的。
在成功安装subprocess32之前,由于此新版本存在,因此失败。失败是因为尝试安装subprocess32的计算机上没有gcc。
我该怎么办?我认为有这些解决方案。
但是所有这些并不能真正让我高兴,因为我只能解决当前的问题。几周后,同样的事情可能再次发生。
即使这意味着要使用旧版本,有没有办法告诉pip使用轮子?
背景:新版本没有明确的依赖关系。 Pip尝试获取最新版本。
我使用的是pip版本9.0.1。
答案 0 :(得分:2)
如果我理解正确,则您的用例是在安装特定的软件包tar.gz
时禁止从源代码发行版(tar.bz2
,zip
,subprocess32
)进行安装。用
$ pip install subprocess32 --only-binary=subprocess32
--only-binary=pkgname
和--only-binary=:all:
之间的区别在于,在第一种情况下,仅pkgname
禁止源dists,而后者禁止所有计划安装的软件包的源dists ,包括依赖项。可以通过逗号分隔多个包的名称来选择多个包,例如--only-binary=spam,eggs,bacon
。
每次进入--only-binary
选项都会非常烦人。要永久应用它,请打开pip.conf
并添加:
# ~/.pip/pip.conf
[global]
only-binary=subprocess32
现在发出pip install subprocess32
与上面的命令具有相同的效果-将选择可用于目标平台的最新二进制车轮。如果没有二进制轮可以安装,该命令将失败。
如果您有以下选项,也可以在需求文件中强制使用--only-binary
选项:
# requirements.txt
subprocess32 --only-binary=subprocess32
现在,当从需求文件(通过pip install -r requirements.txt
)进行安装时,将选择可用于目标平台的最新二进制车轮。
答案 1 :(得分:1)
当前有3.2.7和3.5.0版本的轮子,因此您可以尝试
pip install -U subprocess32==3.2.7
或
pip install -U subprocess32==3.5.0
您还可以尝试完全禁用源:
pip install -U --only-binary=:all: subprocess32