it-swarm.com.de

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

Ich verwende pip mit einer Anforderungsdatei in einer virtuellen Umgebung für meine Django Projekte. Ich versuche, einige Pakete zu aktualisieren, insbesondere Django selbst, und es wird eine Fehlermeldung zu Quellcode-Konflikten angezeigt:

Source in `<virtualenv`>/build/Django has version 1.2.3 that conflicts with Django==1.2.4 (from -r requirements/apps.txt (line 3))

Das ist nach der Aktualisierung der Versionsnummer von Django von 1.2.3 auf 1.2.4 in meiner Anforderungsdatei. Ich benutze diesen Befehl, um das Upgrade durchzuführen:

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

Ich kann kein Flag finden, das einen erneuten Download des Gesamtpakets auslöst. Ich habe sogar versucht, zuerst einen Deinstallationsbefehl auszuführen, dann die Installation, aber keine Würfel. Vielleicht fehlt mir etwas?

388
gcaprio

Ich habe den folgenden Befehl ausgeführt und es wurde ein Upgrade von 1.2.3 auf 1.4.0 durchgeführt

pip install Django --upgrade

Abkürzung für das Upgrade:

pip install Django -U

Hinweis : Wenn das zu aktualisierende Paket Anforderungen aufweist, werden mit diesem Befehl zusätzlich alle Anforderungen auf die neuesten verfügbaren Versionen aktualisiert. In neueren Versionen von pip kann Sie können dieses Verhalten verhindern, indem Sie --upgrade-strategy only-if-needed angeben . Mit diesem Flag werden Abhängigkeiten nur dann aktualisiert, wenn die installierten Versionen der abhängigen Pakete die Anforderungen des aktualisierten Pakets nicht mehr erfüllen.

1168
JoeyG

laut pip docs beispiel 3

pip install --upgrade Django

nach meiner Erfahrung werden mit dieser Methode jedoch auch alle damit verbundenen Pakete aktualisiert. Beispiel:

Angenommen, Sie möchten somepackage aktualisieren, für das Django >= 1.2.4 erforderlich ist, und verwenden diese Methode, um somepackage UND Django auf das neueste Update zu aktualisieren. Um sicher zu gehen, machen Sie:

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

Auf diese Weise wird somepackage aktualisiert und Django auf Version 1.2.4 beibehalten

49
whale_steward

Der Verknüpfungsbefehl für --upgrade:

pip install Django --upgrade

Ist:

pip install Django -U
31
Aaron Lelevier

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

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

Dies ist sehr nützlich, wenn Sie eine Anwendung in Django entwickelt haben, die derzeit nur mit einer bestimmten Version von Django (z. B. Django = 1.9.x) funktioniert und ein abhängiges Paket mit aktualisieren möchten Ein Bugfix/eine neue Funktion und das aktualisierte Paket hängen von Django ab (funktioniert aber beispielsweise mit jeder Version von Django nach 1.5). Das Standardverhalten von pip install --upgrade Django-some-package besteht darin, Django auf die neueste verfügbare Version zu aktualisieren, was ansonsten zu Problemen mit Ihrer Anwendung führen könnte. Mit den --upgrade-strategy only-if-needed abhängigen Paketen wird das Upgrade jedoch nur bei Bedarf durchgeführt.

14
dr jimbob

Wenn Sie ein Paket aktualisieren, wird das alte deinstalliert.

Eine bequeme Möglichkeit, dies zu tun, ist die Verwendung von pip-upgrade , das auch die Versionen in Ihrer requirements.txt -Datei für die ausgewählten Pakete (oder alle Pakete) aktualisiert.

Installation

pip install pip-upgrader

Verwendung

Aktivieren Sie Ihre virtuelle Version (wichtig, da auch die neuen Versionen der aktualisierten Pakete in der aktuellen virtuellen Version installiert werden).

cd in Ihr Projektverzeichnis und führen Sie dann Folgendes aus:

pip-upgrade

Fortgeschrittene Nutzung

Wenn sich die Anforderungen an einem nicht standardmäßigen Ort befinden, senden Sie sie als Argumente:

pip-upgrade path/to/requirements.txt

Wenn Sie bereits wissen, welches Paket Sie aktualisieren möchten, senden Sie diese einfach als Argumente:

pip-upgrade -p Django -p celery -p dateutil

Wenn Sie ein Upgrade auf eine Vorab-/Nachabversion durchführen müssen, fügen Sie Ihrem Befehl das Argument --prerelease hinzu.

Vollständige Offenlegung: Ich habe dieses Paket geschrieben. Ich hoffe es hilft.

13

Normalerweise räumt pip nach sich selbst auf und entfernt den Inhalt des Build-Verzeichnisses. Das einzige Mal, dass dies nicht der Fall ist, wenn:

  1. Sie haben die Option --no-install verwendet
  2. Sie verwenden bearbeitbare Pakete
  3. Die Installation wurde abgebrochen oder auf andere Weise unterbrochen.

In allen anderen Fällen sollten Sie kein build -Verzeichnis haben, das Ihre Umgebung verstopft.

4
Burhan Khalid

das löste für mich das problem "pip install -I --upgrade psutil --force" danach deinstalliere einfach psutil mit der neuen version und hoffe du kannst plötzlich die ältere version installieren (:

0
Eran Hpac