2016-05-18 4 views
11

я написал пакет с зависимостью зависимостей к psutil (my-package зависит от third-party-package, которая зависит от psutil).
Поскольку он должен работать на сервере без каких-либо подключений и без gcc, я подготовил развертывание локально с psutilpython platform wheel и pip install my-package --download, а затем отправил все на сервер.Неприятности при установке psutil (колесо), как зависимость через пип

Теперь все готово на сервере, но по какой-то причине, когда я запускаю установку, pip отказывается устанавливать psutil. Обратите внимание, что сервер представляет собой красную шапку 7.2 running pip 7.1.0, virtualenv 1.10.1 и python 2.7.5 (и я не могу изменить версию чего-либо).

$ 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... 

Что мне не хватает? Любая подсказка?

+0

Что такое сторонний пакет? – second

+0

Это пакет, разработанный кем-то в моей компании. В файле setup.py содержится 'install_requires = ['psutil']'; ничего особенного. – Anto

+0

Не уверен, что у вас несколько версий python, но в pip.log проверить, что в обоих случаях, когда используется python, это правильная версия? (http://stackoverflow.com/questions/29879504/python-version-incorrectly-identified) Не убежден, что это ваша проблема, но это начало. Еще раз, почему вы все еще на 2.7.5? последнее - 2.7.11. –

ответ

0

Из вашего ответа кажется, что вы получили его с дополнительным шагом.

При выполнении автономной установки вам необходимо указать, где найти все пакеты, которые вы хотите установить, а не только на верхнем уровне.

Я лично всегда был откровенен в отношении того, что вы ищете в файле, и, как и любая другая установка pip, вы можете указать несколько установок в одной строке для контекста.

$ pip install --no-index --find-links file:/tmp/python_packages/ --use-wheel psutil my-package-1.4.zip 
+0

Я не думаю, что это причина, потому что пип находит колесо; он просто отказывается устанавливать его по причине, которая не звучит законно (версия python);) – Anto

+0

Это больше связано с версией pip/ven/setuptools, чем версия Python IMHO. @Anto: какая версия этих инструментов вы используете? И ради чего это Linux-дистрибутив/версия? –

+0

Что такое вывод pip -version? –

1

Ключевой проблемой вы столкнулись ИМХО это:

Skipping file:///tmp/python_packages/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl 
because it is not compatible with this Python 

Новая недавняя функция была введена в пип для поддержки «много Linux» колеса (см это PEP)

When запрашивая прямую установку колеса, выполняются минимальные проверки, и pip предполагает, что вы действительно хотите, чтобы это было установлено.

Когда колесо устанавливается косвенно в качестве отпечатка депо в вашем случае, в этом контексте могут быть несовместимые теги.

Я бы удостоверился, что использую последнюю версию pip, setuptools и virtualenv для удаления движущихся частей, и это может решить вашу проблему.

Смутно связанный, и если это может помочь, я использую this script с оберткой Linux/Mac или Windows для последовательной установки пакетов поставщиков. Ключевым моментом является то, что все поставщики, и это может быть другой причиной, по которой вы получаете некоторые сбои.

1

Убедитесь, что версия колеса, которую вы используете для создания колеса, такая же, как версия, используемая во время развертывания.

У меня возникла такая же проблема при попытке развернуть колесо с 0.29.0, используя колесо 0.24.0.

Я понизил версию колеса, используемого для сборки колеса, в соответствии с версией, используемой во время развертывания, и это решило проблему.

+0

Я проверю это, спасибо большое. – Anto

Смежные вопросы