Wie aktualisiere ich alle meine Python-Pakete mit dem Befehl pip aus der Datei "require.txt"?
versucht mit unten Befehl
$ pip install --upgrade -r requirements.txt
Da die Python-Pakete mit der Versionsnummer ( Django==1.5.1
) versehen sind, scheinen sie nicht zu aktualisieren. Gibt es einen besseren Ansatz als die manuelle Bearbeitung der Datei "require.txt"?
BEARBEITEN
Wie Andy in seiner Antwort erwähnt hat, sind Pakete an eine bestimmte Version gebunden, daher ist es nicht möglich, Pakete mit dem Befehl pip zu aktualisieren.
Dies können wir jedoch mit pip-tools
dem folgenden Befehl erreichen.
$ pip-review --auto
Dadurch werden automatisch alle Pakete von der pip-tools
Datei "resources.txt" aktualisiert (stellen Sie sicher, dass Sie sie mit dem Befehl "pip install" installieren).
python
pip
packages
requirements.txt
abhiomkar
quelle
quelle
pip-compile -U requirements.txt
.Antworten:
Nein. Ihre Anforderungsdatei wurde an bestimmte Versionen angeheftet . Wenn Ihre Anforderungen auf diese Version festgelegt sind, sollten Sie nicht versuchen, ein Upgrade über diese Versionen hinaus durchzuführen. Wenn Sie benötigen ein Upgrade, dann müssen Sie nicht fixieren Versionen in Ihrer Datei wechseln.
Beispiel:
Dies würde lxml auf eine neuere Version als 2.2.0 aktualisieren
Dies würde lxml auf die neueste Version zwischen 2.2.0 und 2.3.0 aktualisieren.
quelle
sed 's/==/>=/g' requirements.txt > TMP_FILE && mv TMP_FILE requirements.txt
wird alle ersetzen==
durch>=
Du kannst es versuchen:
Sie können das installierte Paket auch ignorieren und das neue installieren:
quelle
-I
und--ignore-installed
die gleichen Flags sind und es natürlich nicht gültig ist, ein,
darin zu haben. Auf diese Weise werden während der Installation keine Downgrades durchgeführt. Nach Abschluss der Installation der Anforderungen können installierte Pakete mit aktualisiert werdenpip-review --auto
.Diese Frage habe ich hier bereits beantwortet . Hier ist meine Lösung:
Da es keine einfache Möglichkeit gab, Paket für Paket zu aktualisieren und die Datei " require.txt" zu aktualisieren
requirements.txt
, habe ich diesen Pip-Upgrader geschrieben, der auch die Versionen in Ihrer Datei für die ausgewählten Pakete (oder alle Pakete) aktualisiert .Installation
Verwendung
Aktivieren Sie Ihre virtuelle Umgebung (wichtig, da dadurch auch die neuen Versionen aktualisierter Pakete in der aktuellen virtuellen Umgebung installiert werden).
cd
in Ihr Projektverzeichnis und führen Sie dann Folgendes aus:Erweiterte Verwendung
Wenn die Anforderungen an einem nicht standardmäßigen Speicherort platziert werden, senden Sie sie als Argumente:
Wenn Sie bereits wissen, welches Paket Sie aktualisieren möchten, senden Sie es einfach als Argumente:
Wenn Sie ein Upgrade auf die Pre-Release- / Post-Release-Version durchführen müssen, fügen Sie
--prerelease
Ihrem Befehl ein Argument hinzu.Vollständige Offenlegung: Ich habe dieses Paket geschrieben.
quelle
Ich schlage vor , alle Ihre Abhängigkeiten einzufrieren, um vorhersehbare Builds zu erhalten .
Dabei können Sie alle Abhängigkeiten gleichzeitig wie folgt aktualisieren :
Nachdem die oben getan, testen Sie Ihr Projekt mit dem neuen Satz von Paketen und schließlich begeht die
requirements.txt
Datei in das Repository.quelle
Ich musste nur das Gleiche tun ... habe diesen kleinen Einzeiler benutzt, um die Arbeit zu erledigen:
welche:
packages=$(cat requirements.txt | sed 's/==.*//g')
Erstellt eine Liste der aktuellen Paketnamen in der Datei "resources.txt" (Entfernen der Version).echo $packages | xargs pip3 install -U
Übergibt dann alle Pakete als Argumente an pip3, um ein Upgrade durchzuführen.freeze=$(pip3 freeze);
Ruft alle aktuellen Paketversionen in dem für anforderungs.txt erforderlichen Format abfor p in $(echo $packages)
durchläuft dann die Paketnamenecho $freeze | grep -E "^${p}==" >> requirements.new
Ruft die Paketversionszeile aus der Pip-Freeze-Ausgabe ab, die mit dem Paket übereinstimmt, und schreibt in die neue Datei "require.txt"Dies hat den zusätzlichen Vorteil, dass die Reihenfolge der ursprünglichen Anforderungen beibehalten wird. :) :)
Hoffe das hilft!
quelle
Da ich das mit bash nicht machen konnte, habe ich ein Python-Modul geschrieben, um eine neue Anforderungsdatei ohne Versionen zu erstellen und sie zu verwenden:
Installieren Sie dann die Bibliotheken aus der neuen Datei
pip install -U -r requirements-prod-no-version.pip
Zum Schluss frieren Sie die Versionen in der Originaldatei ein
pip freeze > requirements-prod.pip
quelle
Eine andere Lösung ist es, die verwenden Upgrade-Anforderungen Paket
Und dann laufen:
Es werden alle Pakete aktualisiert, die nicht die neuesten Versionen haben, und am Ende wird eine aktualisierte Datei "require.txt" erstellt.
quelle
1) Um pip installierten Dateien von Upgrade reqs.txt hinzufügen > = Ersatz von == dies pip sagen installieren lib größer oder auf die Version gleich Sie anfordern, die hier durch die meisten auf dem neuesten Stand der Installation von Version der angeforderten Bibliothek
1.a) ** Meine Antwort für den Thread ** Durch Hinzufügen von
py -m pip install -r
reqs.txt zu einem täglichen Neustart ... oder etwas Ähnlichem können Sie Ihre installierten Bibliotheken aktualisieren. Von Andy Perfectly zusammengefasst- Mein Grund für die Eingabe dieses Threads war, Informationen zum Aktualisieren der virtuellen Env-Basis-Pip zu finden (normalerweise 10.0.03 für mich?)
In der Hoffnung, ein Problem zu lösen, von dem ich eine von zwei Lösungen ableiten konnte
Dank Andy habe ich Bedürfnis B befriedigt
Durch Hinzufügen von pip > = angeforderte Version in reqs.txt
nach Instanziierung einer neuen virtuellen Umgebung || Neuinstanziierung des vorherigen Venv
py -m venv devenv
um neue dev env einzurichten
evenv\scripts\activate.bat
um dev env zu aktivieren
python -m pip install -r requirenments.txt
Basisbibliotheken installieren
yeilds Ausgabe
Entschuldigung für den Brain Dump, hoffentlich hilft das jemandem :)
🤳 Austin 👨🎤🚀🥊
quelle
Die zweite Antwort ist die nützlichste, aber ich wollte einige Pakete sperren, während andere die neueste Version haben (z. B. youtube-dl).
Ein Beispiel
requirements.txt
würde so aussehen (~ bedeutet kompatibel):Verwenden Sie dann im Terminal den Befehl
pip install --upgrade -r requirements.txt
Dies stellt sicher, dass Pillow bei 6.2.2 bleibt, Anfragen auf die neueste Version 2.22.x aktualisiert werden (falls verfügbar) und die neueste Version von youtube-dl installiert wird, falls dies noch nicht geschehen ist.
quelle
Ich denke, die einfachste Lösung ist das Erstellen der Anforderungen.txt mit:
quelle
Wenn Sie etwas in Ihrem Django-Projekt installieren und nach der Installation Ihre Anforderungsdatei aktualisieren möchten, kann dieser Befehl Ihre request.txt-Datei pip freeze> require.txt aktualisieren
Wenn Ihre Anforderungsdatei in Ihrem Projekt nicht vorhanden ist, können Sie diesen Befehl verwenden, um eine neue request.txt-Datei zu erstellen. pip freeze> require.txt
quelle
Ich bearbeite die Anforderungen.txt wie folgt und führe $ sh ./requirements.txt aus
quelle