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?

18voto

Simion Agavriloaei Punkte 2689

Wenn Sie ein Paket aktualisieren, wird das alte Paket deinstalliert.

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

Einrichtung

pip install pip-upgrader

Verwendung

Aktivieren Sie Ihr virtualenv (wichtig, weil dadurch auch die neuen Versionen der aktualisierten Pakete in der aktuellen Virtualenv installiert werden).

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

pip-upgrade

Erweiterte Nutzung

Wenn die Anforderungen an einer nicht standardisierten Stelle platziert sind, senden Sie sie als Argumente:

pip-upgrade path/to/requirements.txt

Wenn Sie bereits wissen, welches Paket Sie aktualisieren möchten, senden Sie es einfach als Argument:

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

Wenn Sie auf eine Vorabversion/Nachabversion aktualisieren müssen, fügen Sie --prerelease Argument für Ihren Befehl.

Vollständige Offenlegung: Ich habe dieses Paket geschrieben.

15voto

Eran Hpac Punkte 131

Damit war das Problem für mich gelöst:

pip install -I --upgrade psutil --force

Danach einfach psutil mit der neuen Version deinstallieren und hoffen, dass man plötzlich die ältere Version installieren kann (:

8voto

Bedram Tamang Punkte 2827

Mir hat es geholfen, eine bestimmte Version für das Upgrade zu definieren, anstatt nur den Upgrade-Befehl.

pip3 install larapy-installer==0.4.01 -U

4voto

Burhan Khalid Punkte 161333

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

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

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

3voto

Preetham D P Punkte 51

Um Ihr Paket zu aktualisieren

pip install --upgrade YOUR_PACKAGE_NAME==VERSION

aus der Anforderungsdatei

pip install --upgrade -r requiremnet.txt

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