Как указать порядок установки для питона python?

Я работаю с тканью (0.9.4) + pip (0.8.2), и мне нужно установить некоторые модули python для нескольких серверов. Все серверы имеют старую версию setuptools (0.6c8), которую необходимо обновить для модуля pymongo. Pymongo требует setuptools> = 0.6c9.

Моя проблема заключается в том, что pip запускает установку с pymongo вместо setuptools, что приводит к остановке pip. Порядок перемешивания модуля в файле требований, похоже, не помогает.

requirements.txt:

setuptools>=0.6c9 pymongo==1.9 simplejson==2.1.3 

Есть ли способ указать порядок установки для пипа, поскольку он, похоже, не делает это правильно сам по себе?

Это можно решить с помощью двух отдельных файлов требований, но было бы неплохо, если бы мне не нужно было поддерживать несколько файлов требований сейчас или в будущем.

Проблема сохраняется с пиком 0.8.3.

9 Solutions collect form web for “Как указать порядок установки для питона python?”

Это глупый взлом, но он может просто работать. Напишите сценарий bash, который читает из вашего файла требований по строкам и запускает команду pip на нем.

 #!/bin/bash for line in $(cat requirements.txt) do pip install $line -E /path/to/virtualenv done 

Вы можете просто использовать:

 cat requirements.txt | xargs pip install 

Чтобы разрешить все типы записей (например, пакеты из репозиториев git) в файле требований.txt, вам необходимо использовать следующий набор команд

 cat requirements.txt | xargs -n 1 -L 1 pip install 

Параметры -n 1 и -L 1 необходимы для установки пакетов по одному и обрабатывают каждую строку в файле requirements.txt как отдельный элемент.

К сожалению, предложение по обновлению не будет работать. Если вы прочтете другие данные в https://github.com/pypa/pip/issues/24, вы увидите, почему

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

 numpy==1.7.1 scipy==0.13.2 statsmodels==0.5.0 

Построение статистических моделей не будет выполнено со следующим утверждением

 ImportError: statsmodels requires numpy 

Обходной путь для вызова вручную для каждой записи в файле требований (через скрипт оболочки) кажется единственным текущим решением.

Pymongo требует setuptools> = 0.6c9

Откуда вы знаете? Требуется построить или установить? Вы не говорите, какую версию Pymongo вы пытались установить, но глядя на файл setup.py для текущей версии (3.2.2), нет никакой спецификации ни того, что Pymongo требует запуска setup.py ( setup_requires ), ни того, что требуется для install ( install_requires ). Без такой информации pip не может обеспечить определенную версию setuptools. Если Pymongo требует, чтобы определенная версия setuptools запускала свой setup.py (в отличие от необходимости запуска setuptools для запуска самой функции setup ), то другая проблема заключается в том, что до недавнего времени не было никакого способа указать это. Теперь есть спецификация – PEP 518 – Указание минимальных требований к созданию сборки для проектов Python , которые должны быть вскоре реализованы в pip – Реализация поддержки PEP 518 # 3691 .

Что касается порядка установки, это было зафиксировано в пункте 6.1.0;

From pip install – Раздел « Порядок заказа » документации к ПП:

Начиная с v6.1.0, pip устанавливает зависимости перед их иждивенцами, то есть в «топологическом порядке». Это единственное обязательство, которое в настоящее время делает связанный с заказом.

И позже:

До v6.1.0, pip не принимал никаких обязательств относительно порядка установки.

Однако без надлежащей спецификации требований Pymongo это тоже не поможет.

Если у вас есть комментарии в файле требований, которые вы хотите использовать:

 grep -v "^#" requirements.txt | xargs pip install 

Следуя решению @ lukasrms – я должен был сделать это, чтобы получить возможность устанавливать мои требования по одному разу:

 cat requirements.txt | xargs -n 1 pip install 

Я закончил работать с pip в virtualenv вместо того, чтобы использовать «pip -E», потому что с -E pip все еще мог видеть серверные пакеты сайтов и, очевидно, испортил некоторые из установочных файлов.

У меня также были проблемы с серверами без virtualenvs. Даже если я установил setuptools с отдельной командой pip, pymongo откажется быть установленным.

Я решил это, установив setuptools отдельно с easy_install, поскольку это, кажется, проблема между pip и setuptools.

фрагменты из файла fabfile.py:

 env.activate = "source %s/bin/activate" % virtualenv_path _virtualenv("easy_install -U setuptools") _virtualenv("pip install -r requirements.txt") def _virtualenv(command) if env.virtualenv: sudo(env.activate + "&&" + command) else: sudo(command) 

У меня были проблемы с пунктами 0.8.3 и 0.8.2.

Извините, мой первый ответ был неправильным, потому что у меня был setuptools> = 0.6c9.

Кажется, это невозможно, потому что setup.py pymongo требует setuptools> = 0.6c9, но pip только загрузил setuptools> = 0.6c9 и еще не установлен.

Кто-то обсуждал это в вопросе, который я указал раньше.

Несколько недель назад у меня возникла проблема со мной: не запускайте egg_info для каждого пакета в списке требований перед установкой предыдущих пакетов .

Извините за шум.


Первый ответ:

Обновите свой пипс до версии 0.8.3, он имеет исправление к порядку установки .

Теперь, если вы обновите все работает 🙂

Проверьте новости здесь: http://www.pip-installer.org/en/0.8.3/news.html

  • Как установить библиотеку python Pyexiv2 и Gexiv2 на osx 10.6.8?
  • Окружающая среда $ PATH отличается при использовании venv
  • Virtualenv: невозможно создать virtualenv: IOError: Нет такого файла или каталога: 'python'
  • Ошибка импорта не может импортировать имя execute_manager в среде Windows
  • Где virtualenvwrapper.sh после установки pip?
  • Virtualenv с Eclipse (Galileo)
  • создание простого пакета, который можно установить через Pip & virtualenv
  • Требования Matplotlib с установкой pip в virtualenv
  • Python - лучший язык программирования в мире.