Python, pip: избегайте gcc во время установки

1

Наш локальный сервер пакетов 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 прошла успешно, поскольку эта новая версия существует, она терпит неудачу. Он терпит неудачу, потому что на машине нет gcc, который пытается установить subprocess32.

Что я могу сделать? Я думаю, что есть такие решения.

  • удалить subprocess32-3.5.2.tar.gz
  • сделать подпроцесс32-3.5.2 доступным в качестве колеса
  • сделать gcc доступным на машине
  • исправить зависимость к подпроцессу32-3.5.0

Но все они на самом деле не радуют меня, поскольку я решаю только свою текущую проблему. Через несколько недель может произойти то же самое.

Есть ли способ сказать пипсу использовать колесо, даже если это означает взять более старую версию?

Предпосылки: нет явной зависимости от новой версии. Pip пытается взять последнюю версию.

Я использую pip версии 9.0.1.

Теги:
pip

2 ответа

2
Лучший ответ

Если я правильно понимаю, ваш вариант использования - запретить установку из исходного дистрибутива (tar.gz, tar.bz2, zip) при установке определенного пакета subprocess32. Сделайте это с помощью

$ pip install subprocess32 --only-binary=subprocess32

Разница между --only-binary=pkgname и --only-binary=:all: заключается в том, что в первом случае исходные dists будут запрещены только для pkgname, в то время как последний запрещает исходные диски для всех пакетов, запланированных для установки, включая зависимости. Несколько пакетов могут быть выбраны путем запятой, разделяя их имена, например, --only-binary=spam,eggs,bacon.

Постоянная конфигурация

Ввод - --only-binary опция каждый раз начинает раздражать довольно быстро. Чтобы применить его навсегда, откройте pip.conf и добавьте:

# ~/.pip/pip.conf

[global]
only-binary=subprocess32

Теперь выдача pip install subprocess32 будет иметь тот же эффект, что и указанная выше команда - будет выбрано последнее двоичное колесо, доступное для целевой платформы. Если никакие бинарные колеса не будут пригодны для установки, команда не будет выполнена.

Указание бинарного требования

Вы также можете принудительно --only-binary параметр --only-binary в файл требований, если он есть:

# requirements.txt
subprocess32 --only-binary=subprocess32

Теперь, при установке из файла требований (через pip install -r requirements.txt), будет выбрано последнее двоичное колесо, доступное для целевой платформы.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню