Używam pip z plikiem wymagań w virtualenv dla moich projektów Django. Próbuję zaktualizować niektóre pakiety, zwłaszcza sam Django, i pojawia się błąd dotyczący konfliktów kodu źródłowego:
Source in `<virtualenv`>/build/Django has version 1.2.3 that conflicts with Django==1.2.4 (from -r requirements/apps.txt (line 3))
To po aktualizacji numeru wersji Django z 1.2.3 do 1.2.4 w moim pliku wymagań. Korzystam z tego polecenia, aby wykonać aktualizację:
pip --install --upgrade -E `<virtualenv dir`> --requirement `<requirements file`>
Nie mogę znaleźć żadnej flagi, która wyzwalałaby ponowne pobranie całego pakietu. Próbowałem nawet uruchomić najpierw polecenie dezinstalacji, a następnie zainstalować, ale nie ma kości. Może coś mi umknęło?
django
virtualenv
pip
gcaprio
źródło
źródło
Odpowiedzi:
Nie jestem pewien, czy to dokładnie twój problem, ale w moim przypadku nie byłem w stanie zaktualizować Django do wersji 1.2.4 - zawsze kończyłem z wersją 1.2.3, więc odinstalowałem Django z:
Następnie usunąłem
<virtualenv>/build/Django
katalog i ostatecznie zainstalowałem odpowiednią wersję z:Mam nadzieję, że to pomoże.
źródło
pip install Django -U
lubpip install Django --upgrade
jak opisano w odpowiedzi @JoeyG.Uruchomiłem następujące polecenie i zaktualizowałem je z 1.2.3 do 1.4.0
Skrót do aktualizacji:
Uwaga : jeśli aktualizowany pakiet ma jakieś wymagania, to polecenie dodatkowo zaktualizuje wszystkie wymagania do najnowszych dostępnych wersji. W najnowszych wersjach pipa można temu zapobiec, określając
--upgrade-strategy only-if-needed
. Z tą flagą zależności nie będą uaktualniane, chyba że zainstalowane wersje zależnych pakietów nie będą spełniać wymagań uaktualnionego pakietu.źródło
pip install Requests --upgrade
i zaktualizowałem tylko „żądania”. Opis mówi „uaktualnij wszystkie określone pakiety” podczas przeglądania dokumentów.pip install --upgrade django==1.4.0
zgodnie z pip docs przykład 3
ale na podstawie mojego doświadczenia, użycie tej metody spowoduje również aktualizację każdego pakietu z nią związanego. przykład:
Załóżmy, że chcesz dokonać aktualizacji,
somepackage
która wymagadjango >= 1.2.4
zastosowania tego rodzaju metody, zaktualizujesomepackage
ORAZdjango
do najnowszej aktualizacji. Dla bezpieczeństwa wykonaj:W ten sposób zaktualizujesz
somepackage
i utrzymasz django w wersji 1.2.4źródło
django
jako główny pakiet, a następnie w przykładzie, którego używasz,somepackage
a następnie używaszdjango
jako zależności.Skrót dla
--upgrade
:Jest:
źródło
Jeśli zaktualizujesz pakiet, stary zostanie odinstalowany.
Wygodnym sposobem na to jest skorzystanie z tego narzędzia do aktualizacji pip, które aktualizuje również wersje
requirements.txt
pliku dla wybranych pakietów (lub wszystkich pakietów).Instalacja
Stosowanie
Aktywuj virtualenv (ważne, ponieważ zainstaluje także nowe wersje uaktualnionych pakietów w bieżącym virtualenv).
cd
do katalogu projektu, a następnie uruchom:Zaawansowane użycie
Jeśli wymagania są umieszczone w niestandardowej lokalizacji, prześlij je jako argumenty:
Jeśli już wiesz, jaki pakiet chcesz zaktualizować, po prostu wyślij je jako argumenty:
Jeśli chcesz zaktualizować wersję do wersji wstępnej / późniejszej, dodaj
--prerelease
argument do swojego polecenia.Pełne ujawnienie: napisałem ten pakiet. Mam nadzieję, że to pomoże.
źródło
pip-upgrade -p all
zaktualizuje wszystkie twoje pakiety i zaktualizuje plik wymagań bez potrzeby wkładania od ciebie danych.Jeśli chcesz uaktualnić tylko jeden konkretny pakiet o nazwie
somepackage
, polecenie, którego powinieneś użyć w najnowszych wersjach pip toJest to bardzo przydatne, gdy opracowałeś aplikację w django, która obecnie będzie działać tylko z określoną wersją django (powiedzmy Django = 1.9.x) i chcesz zaktualizować jakiś zależny pakiet z poprawką / nową funkcją, a pakiet uaktualniony zależy na django (ale działa z powiedzmy każdą wersją django po 1.5). Domyślnym działaniem
pip install --upgrade django-some-package
byłoby uaktualnienie django do najnowszej dostępnej wersji, która w innym przypadku mogłaby uszkodzić twoją aplikację, chociaż w przypadku--upgrade-strategy only-if-needed
zależnych pakietów będzie teraz aktualizowana tylko w razie potrzeby.źródło
Zwykle pip wyczyści się po sobie i usunie zawartość katalogu kompilacji. Nie robi tego tylko wtedy, gdy:
--no-install
opcjiWe wszystkich innych przypadkach nie powinieneś mieć
build
katalogu, który blokuje twoje środowisko.źródło
Zdefiniowanie konkretnej wersji do uaktualnienia pomogło mi zamiast tylko polecenia uaktualnienia.
źródło
które rozwiązało dla mnie problem „pip install -I - upgrade psutil --force”, po prostu odinstaluj psutil z nową wersją i mam nadzieję, że możesz nagle zainstalować starszą wersję (:
źródło
Używam tego:
źródło