Проблемы при установке psutil (колеса) в качестве зависимости через pip
Я написал пакет с зависимостью зависимостей от psutil (my-package
зависит от third-party-package
, который зависит от psutil
).
Поскольку он должен работать на сервере без какой-либо связи и без gcc
, я подготовил развертывание локально с psutil
колесом платформы python и pip install my-package --download
, а затем отправил все на сервер.
Теперь все готово на сервере, но по какой-то причине, когда я запускаю установку, pip
отказывается устанавливать psutil
. Обратите внимание, что сервер представляет собой красную шапку 7.2 running pip 7.1.0, virtualenv 1.10.1 и python 2.7.5 (и я могу" t изменить версию чего-либо).
$ pip install /tmp/python_packages/my-package-1.4.zip --no-index
--find-links /tmp/python_packages/ --use-wheel
Ignoring indexes: https://pypi.python.org/simple/
# blablabla, everything goes fine, then
Downloading/unpacking psutil (from third-party-package>=0.9->my-package==1.4)
Could not find any downloads that satisfy the requirement psutil
(from third-party-package>=0.9->my-package==1.4)
Cleaning up...
No distributions at all found for psutil (from third-party-package>=0.9->my-package==1.4)
Storing complete log in /home/anto/.pip/pip.log
Вот что pip.log
говорит:
Downloading/unpacking psutil (from third-party-package>=0.9->my-package==1.4)
URLs to search for versions for psutil (from third-party-package>=0.9->my-package==1.4):
# bla
Skipping file:///tmp/python_packages/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl
because it is not compatible with this Python
# bla
Could not find any downloads that satisfy the requirement psutil (from third-
party-package>=0.9->my-package==1.4)
Cleaning up...
Итак, "несовместимо с этим Python", нормально. Но вот действительно странная часть: если я установлю psutil
без каких-либо других, а затем и все остальное, все будет хорошо.
$ pip install /tmp/python_packages/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl
Unpacking /tmp/python_packages/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl
Installing collected packages: psutil
Successfully installed psutil
Cleaning up...
$ pip freeze -l
psutil==4.2.0
$ pip install /tmp/python_packages/my-package-1.4.zip --no-index
--find-links /tmp/python_packages/ --use-wheel
# blablabla
Successfully installed my-package third-party-package
Cleaning up...
Что мне не хватает? Любая подсказка?
Ответы
Ответ 1
Ключевой вопрос, с которым вы сталкиваетесь, это IMHO:
Skipping file:///tmp/python_packages/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl
because it is not compatible with this Python
Новая новая функция была добавлена в pip для поддержки дисков "many linux" (см. PEP)
При запросе прямой установки колеса выполняется минимальная проверка, и pip предполагает, что вы действительно хотите, чтобы это было установлено.
Когда колесо устанавливается косвенным образом в качестве отступки в вашем случае, в этом контексте могут быть несовместимые теги.
Я бы удостоверился, что использую последнюю версию pip, setuptools и virtualenv для удаления движущихся частей, и это может решить вашу проблему.
Смутно связанный, и если это может помочь, я использую этот script с Linux/Mac или оболочка Windows для последовательной установки пакетов поставщиков. Ключевым моментом является то, что все производители могут продавать, и это может быть другой причиной, по которой вы получаете некоторые сбои.
Ответ 2
Убедитесь, что версия колеса, которую вы используете для создания колеса, такая же, как версия, используемая во время развертывания.
У меня возникла такая же проблема при попытке развернуть колесо, построенное с 0.29.0, используя колесо 0.24.0.
Я понизил версию колеса, используемого для сборки колеса, чтобы соответствовать версии, используемой во время развертывания, и это устранило проблему.
Ответ 3
Из вашего ответа кажется, что вы получили его с дополнительным шагом.
При выполнении автономной установки вам нужно указать, где найти все пакеты, которые вы хотите установить, а не только на верхнем уровне.
Я лично всегда был откровенен в том, что вы смотрите в файле, и, как и любая другая установка pip, вы можете указать несколько установок в одной строке для контекста.
$ pip install --no-index --find-links file:/tmp/python_packages/ --use-wheel psutil my-package-1.4.zip