PIP всегда переустанавливает пакет при использовании определенной версии SVN - PullRequest
8 голосов
/ 01 ноября 2011

PIP всегда загружает и устанавливает пакет, когда указана конкретная версия SVN (значительно замедляя процесс синхронизации).

Есть ли способ обойти это?Обычно pip обнаруживает, что пакет уже установлен в среде, и предлагает использовать --upgrade.

Мой файл pip_requirements содержит следующую строку:

svn+http://code.djangoproject.com/svn/django/trunk/@16406#egg=Django1.4A

Спасибо за вашу помощь!

Ответ

  • Необходимо указать имя яйца в качестве точного имени пакета Python.
  • Не должен использовать флаг -e.
  • Не работает на PIP версии 0.7, работает на 1.0.2.

1 Ответ

3 голосов
/ 11 января 2012

Я на самом деле взломал пипс в прошлые выходные, и я думаю, у меня есть объяснение твоим бедам.Проблема заключается только в ограничении внутри самого пункта.В связи с тем, как работает процесс установки, часть #egg=[egg-name] должна быть правильно названа в соответствии с фактическим именем проекта, указанным в имени setup.py kwarg (это имя известно в PyPI).

Short Answer

Ваша строка:

svn+http://code.djangoproject.com/svn/django/trunk/@16406#egg=Django1.4A

Должно быть:

svn+http://code.djangoproject.com/svn/django/trunk/@16406#egg=django

Длинный ответ

На самом деле процесс установки делает следующее, насколько я понимаю (забастовка Яна Бикинга)меня, если я ошибаюсь :-P)

  1. Когда он получает ваше требование, он определяет, что ссылка на VCS, которую он знает, основана на структуре vcs + [url].
  2. Он извлекает код во временный каталог в вашей среде.
  3. Он запускает файл setup.py (я полагаю, и egg_info, и установка)
  4. Временный каталог для извлеченного кода удаляется изфайловая система

Итак, после выполнения шага 3 и установки вашего извлеченного источника Django известен как django (без учета регистра).Однако, если вы сохраните текущую строку требований, pip будет искать Django1.4A.Не найдя пакет, соответствующий этому имени, он снова извлечет исходный код и попытается установить его.

...