Jak Mogę Uaktualnić określone Pakiety za pomocą pip i Pliku wymagań?

Używam Pipa z plikiem wymagań, w virtualenv, dla moich projektów Django. Próbuję uaktualnić niektóre pakiety, zwłaszcza samo Django, i dostaję błąd dotyczący konfliktów kodu źródłowego:

Źródło w <virtualenv>/build/Django ma wersję 1.2.3, która koliduje z Django==1.2.4 (z-R requirements/apps.txt (line 3))

To po aktualizacji numeru wersji Django z 1.2.3 do 1.2.4 w moim pliku wymagań. Używam tej komendy do faktycznie zrób upgrade:

pip --install --upgrade -E `<virtualenv dir`> --requirement `<requirements file`>

Nie mogę znaleźć żadnej flagi, która powoduje ponowne pobranie pakietu. Próbowałem nawet uruchomić najpierw polecenie deinstalacji, a następnie instalację, ale nie ma mowy. Coś przeoczyłem?

Author: Peter Mortensen, 2010-12-27

10 answers

Najpierw upewnij się, że sprawdziłeś najczęściej głosowaną odpowiedź .


Nie jestem pewien, czy to dokładnie twój problem, ale w moim przypadku nie byłem w stanie uaktualnić Django do 1.2.4 - zawsze kończyłem z wersją 1.2.3, więc odinstalowałem Django za pomocą:

<virtualenv>/bin/pip uninstall Django

Potem usunąłem <virtualenv>/build/Django katalog i w końcu zainstalowałem odpowiednią wersję z:

<virtualenv>/bin/pip install Django
 67
Author: Marcin Świerczyński,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-02-02 15:25:24

Uruchomiłem następujące polecenie i zaktualizowałem je z 1.2.3 do 1.4.0

pip install Django --upgrade

Skrót do aktualizacji:

pip install Django -U

Uwaga: jeśli pakiet, który aktualizujesz, ma jakieś wymagania to polecenie dodatkowo zaktualizuje wszystkie wymagania do najnowszych dostępnych wersji. W ostatnich wersjach pip, można zapobiec temu zachowaniu, określając --upgrade-strategy only-if-needed. Z tą flagą zależności nie będą aktualizowane, chyba że zainstalowane wersje pakietów zależnych Nie już spełniają wymagania zmodernizowanego pakietu.

 1370
Author: JoeyG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-29 22:10:01

Według dokumentacji pip przykład 3:

pip install --upgrade django

Ale bazując na moim doświadczeniu, użycie tej metody również zaktualizuje każdy pakiet z nią związany. Przykład:

Załóżmy, że chcesz uaktualnić somepackage które wymagają Django >= 1.2.4 używając tego rodzaju metody, również uaktualnisz somepackage oraz django do najnowszej aktualizacji. Dla pewności, do:

# Assume you want to keep Django 1.2.4
pip install --upgrade somepackage django==1.2.4

Zrobi to upgrade somepackage i utrzyma Django do wersji 1.2.4.

 61
Author: whale_steward,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-27 16:31:14

Polecenie skrótu dla --upgrade:

pip install Django --upgrade

Jest:

pip install Django -U
 38
Author: Aaron Lelevier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-31 13:04:25

Jeśli chcesz uaktualnić tylko jeden konkretny pakiet o nazwie somepackage, polecenie, którego powinieneś użyć w ostatnich wersjach pip, to

pip install --upgrade --upgrade-strategy only-if-needed somepackage

Jest to bardzo przydatne, gdy tworzysz aplikację w Django, która obecnie będzie działać tylko z określoną wersją Django (powiedzmy Django=1.9.x) i chcesz uaktualnić jakiś zależny pakiet za pomocą funkcji bug-fix/new i zaktualizowany pakiet zależy od Django (ale działa z, powiedzmy, każdą wersją Django po 1.5).

Domyślne zachowanie pip install --upgrade django-some-package byłoby uaktualnienie Django do najnowszej dostępnej wersji, która w przeciwnym razie mogłaby zepsuć twoją aplikację, chociaż z zależnymi --upgrade-strategy only-if-needed pakietami będą teraz aktualizowane tylko w razie potrzeby.

 20
Author: dr jimbob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-27 16:32:47

Jeśli zaktualizujesz pakiet, Stary zostanie odinstalowany.

Wygodnym sposobem na to jest użycie tego PIP-upgrader , który również aktualizuje wersje w pliku requirements.txt dla wybranych pakietów (lub wszystkich pakietów).

Instalacja

pip install pip-upgrader

Użycie

Aktywuj swój virtualenv (ważne, ponieważ zainstaluje on również nowe wersje uaktualnionych pakietów w bieżącym virtualenv).

cd do twojego projektu Katalog, a następnie uruchom:

pip-upgrade

Zaawansowane wykorzystanie

Jeśli wymagania są umieszczone w niestandardowej lokalizacji, wyślij je jako argumenty:

pip-upgrade path/to/requirements.txt

Jeśli już wiesz, jaki pakiet chcesz uaktualnić, po prostu wyślij je jako argumenty:

pip-upgrade -p django -p celery -p dateutil

Jeśli chcesz uaktualnić do wersji pre-release / post-release, dodaj argument --prerelease do swojego polecenia.

Pełne ujawnienie: napisałem ten pakiet.

 18
Author: Simion Agavriloaei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-27 16:34:14

Normalnie, pip oczyści się po sobie i usunie zawartość katalogu build. Nie robi tego tylko wtedy, gdy:

  1. użyłeś opcji --no-install
  2. używasz edytowalnych pakietów
  3. Instalacja została anulowana lub w inny sposób przerwana.

We wszystkich innych przypadkach, nie powinieneś mieć build katalogu, który zatyka twoje środowisko.

 4
Author: Burhan Khalid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-04 00:43:14

To dla mnie rozwiązało problem:

pip install -I --upgrade psutil --force

Potem po prostu odinstaluj psutil z nową wersją I hop możesz nagle zainstalować starszą wersję (:

 4
Author: Eran Hpac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-27 16:34:49

Zdefiniowanie konkretnej wersji do aktualizacji pomogło mi zamiast tylko polecenia upgrade.

pip3 install larapy-installer==0.4.01 -U
 2
Author: Bedram Tamang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-27 16:35:22

Używam tego:

pip3 install -r  requirements.txt  
 0
Author: Shahab Rahnama,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-04 10:31:57