2013-06-20 20 views
8

Moje pytanie jest bardzo podobne do pytania this. Ale różni się w taki sposób, że jeśli instaluję jakiś pakiet, chcę wyłączyć uaktualnienie dla określonej zależności, a nie dla wszystkich zależności. Wiem, że jest flaga --no-deps, ale to wykluczy wszystkie zależności, a ja po prostu chcę je wykluczyć.pip: pakiet aktualizacji bez aktualizacji konkretnej zależności

Oto scenariusz:

Oto django-rosetta zależności w najnowszej produkcji:

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

Teraz ja chcesz uaktualnić rosetta pip install -U django-rosetta . Ale próbował pobrać i zainstalować Django 1.5, ponieważ w zależności od rosetty wymagane jest Django >= 1.3 (i nie chcę tego robić, ponieważ Django 1.4 jest już zainstalowany) Chcę tylko, aby zaktualizować pakiet six, jeśli jest.

--no-deps Flaga nie będzie działać, ponieważ również będzie wykluczać pakiet six. Również nie używam środowiska wirtualnego. Wszelkie sugestie proszę?

+0

W przykładzie Pip próbuje zainstalować 'Django 1.5', czy to dlatego, że 'Django 1.4' nie został zainstalowany przy użyciu pip? –

Odpowiedz

18

To działa i pozwala bardziej precyzyjnie:

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

Rzeczywiście tak. – slumtrimpet

7

Utwórz plik wymóg requirement.txt zawierającą:

Django==1.4 

następnie

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

Ale jeśli zastosuję to podejście, zmodernizuję resztę pakietów (poza Django), które znajdują się w pliku requirements.txt. –

+0

Cóż, może nie zrozumiałem twojego pytania, ale prosiłeś o sposób na uniknięcie aktualizacji określonego pakietu (Django) podczas uaktualniania wszystkiego ... co mówię, że plik wymagań może być użyty do zablokowania tych określone pakiety do uaktualnienia i pozwolić na aktualizację pip. – Guillaume

+0

Właśnie przetestowane i będzie działać z plikiem 'requirements.txt', jeśli zachowasz numer wersji także dla każdego pakietu. –

Powiązane problemy