Python,pip:在安装过程中避免使用gcc

时间:2018-06-22 07:20:46

标签: python pip

我们的本地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。

我该怎么办?我认为有这些解决方案。

  • 删除subprocess32-3.5.2.tar.gz
  • 使subprocess32-3.5.2可用作滚轮
  • 使gcc在计算机上可用
  • 将相关性修复为subprocess32-3.5.0

但是所有这些并不能真正让我高兴,因为我只能解决当前的问题。几周后,同样的事情可能再次发生。

即使这意味着要使用旧版本,有没有办法告诉pip使用轮子?

背景:新版本没有明确的依赖关系。 Pip尝试获取最新版本。

我使用的是pip版本9.0.1。

2 个答案:

答案 0 :(得分:2)

如果我理解正确,则您的用例是在安装特定的软件包tar.gz时禁止从源代码发行版(tar.bz2zipsubprocess32)进行安装。用

$ 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