Наш локальный сервер пакетов 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.
Что я могу сделать? Я думаю, что есть такие решения.
Но все они на самом деле не радуют меня, поскольку я решаю только свою текущую проблему. Через несколько недель может произойти то же самое.
Есть ли способ сказать пипсу использовать колесо, даже если это означает взять более старую версию?
Предпосылки: нет явной зависимости от новой версии. Pip пытается взять последнюю версию.
Я использую pip версии 9.0.1.
Если я правильно понимаю, ваш вариант использования - запретить установку из исходного дистрибутива (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
), будет выбрано последнее двоичное колесо, доступное для целевой платформы.
В настоящее время колеса для версий 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