如何使用pip安装,其中一项要求取决于gcc-4.5的版本

问题描述 投票:3回答:3

我正在用Python 2.7.2在我的virtualenv中安装一个打包为pip的鸡蛋。这个鸡蛋有16个要求,其中之一(pycryptopp 0.5.29)已知会因gcc-4.6而失败,因此必须使用4.5进行编译。系统同时安装了gcc-4.6(默认)和gcc-4.5。

我如何配置/破解pip安装以专门构建此软件包? (或者在安装此软件包时我只是暂时取消链接/ usr / bin / gcc)

我需要清理损坏的现有(virtualenv)/ build目录,如果是的话,如何清理?

((我已经阅读了pip文档并搜索了SO + SU)

gcc pip egg pycrypto
3个回答
5
投票

这里无需摆弄符号链接。在大多数Linux系统上,可以将编译器设置为与CC env var一起使用。如果是pycryptopp和pip,以下内容可能会有所帮助:

$ CC=/usr/bin/gcc-4.5 pip install pycryptopp

假设您在该位置安装了GCC 4.5。在安装了gcc-4.5和g ++-4.5软件包的Ubuntu 11.10(oneiric)上,这对我来说效果很好。


1
投票

(我将标题改为“如何使用必须使用gcc-4.5编译要求的pip安装?”]

1)正确的方法是使用链接到libcryptopp的“-disable-embedded-cryptopp”进行构建。 Some people report runtime issue,但对我有用。

pip install --install-option="--disable-embedded-cryptopp" pycryptopp

2。)我使用的一个真正丑陋的解决方法(可以通过使用CC = ..来消除ulif指出的问题)是专门针对问题包调用pip install,并暂时取消指向gcc的链接。

pushd /usr/bin; sudo rm gcc-4.6; ln -s gcc-4.5 gcc; popd;
pip install pycryptopp
pushd /usr/bin; sudo rm gcc-4.5; ln -s gcc-4.6 gcc; popd;

进一步的原因,这很不好:它需要root访问权限,并且弄乱了gcc二进制文件的链接。它当然不能生成文件。


0
投票

添加此内容是为了完整性,以扩展现有的良好答案;如果您使用的是基于apt的发行版,例如UbuntuDebian,则可以执行以下操作:

第1步:安装所需的gcc / g ++版本

sudo apt install gcc-7 gcc-8 g++-7 g++-8

Step2:将gcc / g ++版本安装到操作系统的“替代”系统中:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 70
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 80

第3步:选择活动的gcc / g ++版本

sudo update-alternatives --config gcc

sudo update-alternatives --config g++

在每种情况下,它都会询问您想要哪个版本,或者使用您提供的“权重”为您自动选择:

Selection    path               Priority    Status
--------------------------------------------------------------------
* 0          /usr/bin/gcc-8     80          auto mode
  1          /usr/bin/gcc-8     80          manual mode
  2          /usr/bin/gcc-7     70          manual mode

Press ENTER to maintain, or type the selection number to the corresponding version.

提示:如果要删除版本,只需使用此:

sudo update-alternatives --remove gcc /usr/bin/gcc-7

您仍将使用root / sudo访问权限来执行此操作,但是比手动删除/创建链接或在命令行上指定环境变量要干净得多。这是为基于arpt的发行版中的所有事物选择版本的推荐方法。

© www.soinside.com 2019 - 2024. All rights reserved.