Проблемы при установке 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