Ответ 1
Описание проблемы
- Имейте пакет python (например,
scipy
), который зависит от других пакетов (например,numpy
), ноsetup.py
не объявляет это требование/зависимость. - Построение колесика для такого пакета будет успешным в случае, если текущая среда предоставляет необходимый пакет (ы).
- В случае, если требуемые пакеты недоступны, создание колеса не будет выполнено.
Примечание. Идеальное решение - исправить сломанный setup.py
, добавив требуемое объявление пакета. Но это в основном нецелесообразно, и нам нужно идти другим путем.
Решение: сначала установите требуемые пакеты
Процедура (для установки scipy
, которая требует numpy
), имеет два шага
- постройте колеса.
- используйте колеса для установки необходимого вам пакета.
Заполните рулевую рубку с необходимыми колесами
Это нужно сделать только один раз и многократно использовать его повторно.
-
правильно настроили конфигурацию пифа, чтобы разрешить установку с колес, каталог рулевой рубки настроен и перекрывается с
download-cache
иfind-links
, как в следующем примереpip.conf
:[global] download-cache = /home/javl/.pip/cache find-links = /home/javl/.pip/packages [install] use-wheel = yes [wheel] wheel-dir = /home/javl/.pip/packages
-
установить все необходимые системные библиотеки для всех пакетов, которые необходимо скомпилировать
-
построить колесо для требуемого пакета (
numpy
)$ pip wheel numpy
-
настроить virtualenv (необходимо только один раз), активировать его и установить там
numpy
:$ pip install numpy
Когда колесо уже готово, оно должно быть быстрым.
-
постройте колесо для
scipy
(все еще находящееся в virtualenv)$ pip wheel scipy
К настоящему времени у вас будет рулевая рубка с колесами, которые вам нужны.
-
Вы можете удалить временный virtualenv, он больше не нужен.
Установка в свежий virtualenv
Я предполагаю, что вы создали новый virtualenv, активировали его и хотите, чтобы там был установлен scipy
.
Установка scipy
из нового колеса scipy
будет по-прежнему терпеть неудачу при отсутствии numpy
. Это мы преодолеем, сначала установив numpy
.
$ pip install numpy
И затем закончите с scipy
$ pip install scipy
Я думаю, это можно сделать одним звонком (но я его не тестировал)
$ pip install numpy scipy
Повторная установка scipy
проверенной версии
Вероятно, что в один момент в будущем будет выпущена новая версия scipy
или numpy
, и pip попытается установить последнюю версию, для которой в рулевой рубке нет колеса.
Если вы можете жить с версиями, которые вы использовали до сих пор, вы должны создать requirements.txt
с указанием версий numpy
и scipy
, которые вам нравятся, и установить из него.
Это должно обеспечить необходимый пакет, который должен присутствовать до его фактического использования.