2013-06-20 2 views
8

Мой вопрос очень похож на вопрос this. Но он отличается тем, что, если я устанавливаю какой-то пакет, я хочу только отключить обновление для конкретной зависимости не для всех зависимостей. Я знаю, что есть флаг --no-deps, но он исключит всю зависимость, а я просто хочу исключить ее.pip: пакет обновления без обновления конкретной зависимости

Вот сценарий:

  • У меня есть Django 1.4 установлен
  • Я django-rosetta установлен

Вот django-rosetta зависимости в последней версии:

install_requires=[ 
    'six >=1.2.0', 
    'Django >= 1.3' 
] 

Теперь я хочу обновить rosetta pip install -U django-rosetta , Но он попытался загрузить и установить Django 1.5, потому что в зависимости от rosetta Django >= 1.3 (и я не хочу, чтобы это было сделано, поскольку Django 1.4 уже установлен) Я только хочу, чтобы он обновил пакет six, если он есть.

--no-deps флаг не работает, так как он исключает six упаковка также. Также я не использую виртуальную среду. Любые предложения, пожалуйста?

+0

В примере Пип попытался установить 'Django 1.5', это потому, что 'Django 1.4' не был установлен с помощью pip? –

ответ

18

Это работает и позволяет вам быть более точным:

pip install -U django-rosetta Django==1.4 
+1

Действительно. – slumtrimpet

7

Создать требование файл requirement.txt, содержащий:

Django==1.4 

затем

pip install -U django-rosetta -r requirement.txt 
+0

Но если я последую этому подходу, он обновит остальные пакеты (кроме Django), которые находятся в файле требований. Txt. –

+0

Ну, может, я не понял ваш вопрос, но вы просили о том, чтобы предотвратить обновление определенного пакета (Django) при обновлении всего остального ... что я говорю, это файл требований, который можно использовать для блокировки этих специальные пакеты, которые необходимо обновить, и позволить другим пользователям обновлять обновления. – Guillaume

+0

Просто протестирован и будет работать с файлом 'requirements.txt', если вы сохраните номер версии и для каждого пакета. –

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