656 Stimmen

Wie kann ich bestimmte Pakete mit pip und einer Anforderungsdatei aktualisieren?

Ich verwende pip mit einer Anforderungsdatei, in einer virtualenv, für meine Django-Projekte. Ich versuche, einige Pakete zu aktualisieren, vor allem Django selbst, und ich erhalte eine Fehlermeldung über Quellcodekonflikte:

Quelle in <virtualenv >/build/Django hat Version 1.2.3, die mit Django==1.2.4 in Konflikt steht (aus -r requirements/apps.txt (Zeile 3))

Das ist, nachdem ich die Versionsnummer von Django von 1.2.3 auf 1.2.4 in meiner Anforderungsdatei aktualisiert habe. Ich verwende diesen Befehl, um das Upgrade tatsächlich durchzuführen:

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

Ich kann kein Kennzeichen finden, das einen erneuten Download des Gesamtpakets auslöst. Ich habe sogar versucht, zuerst einen Deinstallationsbefehl auszuführen, und dann die Installation, aber ohne Erfolg. Übersehe ich etwas?

2 Stimmen

Bitte lesen Sie die Antwort von @dr-jimbob, denn neuere Versionen von pip aktualisieren alle anderen Abhängigkeiten, von denen das Paket, das Sie aktualisieren, abhängt.

0 Stimmen

@gcaprio Ich würde dir jetzt eher raten, die Antwort von Marcin Swierczynski zu wählen.

0 Stimmen

In einer App, die eine Django Backend und Angular Frontend, sollte die requirements.txt Datei im Root-Verzeichnis befinden (und dort mit py -m pip install -r requirements.txt ) oder sollte es im Backend-Ordner sein, wo Dateien wie manage.py angesiedelt sind?

1666voto

JoeyG Punkte 15543

Ich habe den folgenden Befehl ausgeführt, und es wurde von 1.2.3 auf 1.4.0 aktualisiert

pip install Django --upgrade

Abkürzung für Upgrade:

pip install Django -U

Note : Wenn das Paket, das Sie aktualisieren, irgendwelche Anforderungen hat, wird dieser Befehl zusätzlich alle Anforderungen auf die neuesten verfügbaren Versionen aktualisieren. In neueren Versionen von pip, können Sie dieses Verhalten verhindern, indem Sie Folgendes angeben --upgrade-strategy only-if-needed . Mit diesem Flag werden Abhängigkeiten nicht aktualisiert, es sei denn, die installierten Versionen der abhängigen Pakete erfüllen nicht mehr die Anforderungen des aktualisierten Pakets.

82voto

Marcin Świerczyński Punkte 2242

Stellen Sie zunächst sicher, dass Sie Folgendes überprüft haben die meistgewählte Antwort .


Ich bin nicht sicher, ob es genau Ihr Problem ist, aber in meinem Fall war ich nicht in der Lage, Django auf 1.2.4 zu aktualisieren - ich war immer mit 1.2.3 Version beenden, so dass ich Django mit deinstalliert:

<virtualenv>/bin/pip uninstall Django

Dann habe ich <virtualenv>/build/Django Verzeichnis und schließlich habe ich die richtige Version mit installiert:

<virtualenv>/bin/pip install Django

80voto

whale_steward Punkte 1928

Nach Angaben von pip Dokumentation Beispiel 3:

pip install --upgrade django

Meiner Erfahrung nach werden mit dieser Methode aber auch alle damit verbundenen Pakete aktualisiert. Beispiel:

Angenommen, Sie möchten ein Upgrade durchführen somepackage die erfordern Django >= 1.2.4 Mit dieser Art von Methode wird auch die somepackage et django auf das neueste Update. Nur um sicher zu gehen, tun:

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

Auf diese Weise wird die somepackage und Django auf der Version 1.2.4 zu halten.

42voto

Aaron Lelevier Punkte 18400

Der Kurzbefehl für --upgrade :

pip install Django --upgrade

Ist:

pip install Django -U

29voto

dr jimbob Punkte 16499

Wenn Sie nur ein bestimmtes Paket aktualisieren möchten, das somepackage Der Befehl, den Sie in neueren Versionen von pip verwenden sollten, lautet

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

Dies ist sehr nützlich, wenn Sie eine Anwendung in Django entwickeln, die derzeit nur mit einer bestimmten Version von Django funktioniert (z.B. Django=1.9.x) und Sie ein abhängiges Paket mit einer Fehlerbehebung/einem neuen Feature aktualisieren möchten und das aktualisierte Paket von Django abhängt (aber mit jeder Version von Django nach 1.5 funktioniert).

Das Standardverhalten von pip install --upgrade django-some-package wäre, Django auf die neueste verfügbare Version zu aktualisieren, was andernfalls Ihre Anwendung zerstören könnte, obwohl mit dem --upgrade-strategy only-if-needed abhängige Pakete werden jetzt nur noch bei Bedarf aktualisiert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X