Как использовать pip install, когда одно требование зависит от версии на gcc-4.5 - PullRequest
2 голосов
/ 21 октября 2011

Я устанавливаю яйцо, упакованное для пипсов, внутри моего virtualenv, под Python 2.7.2.Яйцо имеет 16 требований, одно из которых (pycryptopp 0.5.29), как известно, не работает с gcc-4.6 и, следовательно, должно быть скомпилировано с 4.5.В системе установлены как gcc-4.6 (по умолчанию), так и gcc-4.5.

Как настроить / взломать установку pip для создания этого пакета специально?(или я просто временно кладу ссылку на / usr / bin / gcc при установке этого пакета)

Нужно ли удалять существующий каталог (virtualenv) / build, где он сломался, и если да, то как?1005 *

(я уже прочитал документацию по пипсу и искал SO + SU)

Ответы [ 2 ]

4 голосов
/ 20 января 2012

Нет необходимости возиться с символическими ссылками здесь. В большинстве систем Linux вы можете настроить компилятор для использования с CC env var. В случае pycryptopp и pip может помочь следующее:

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

с учетом того, что в этом месте установлен GCC 4.5. У меня это работало нормально на Ubuntu 11.10 (oneiric) с установленными пакетами gcc-4.5 и g ++ - 4.5.

0 голосов
/ 21 октября 2011

(я переформулировал вопрос из раздела «Как использовать pip install, когда одно требование должно быть скомпилировано с gcc-4.5?»)

1) Правильный метод - построить с "- disable-embedded-cryptopp" , который ссылается на libcryptopp. Некоторые люди сообщают о проблеме во время выполнения , но она работает для меня.

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

2.) По-настоящему уродливый обходной путь, который я использовал (и на который со всей очевидностью указывает ulif, можно избежать с помощью CC = ..) - это вызов 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. Конечно, это не может быть Makefile'd.

...