it-swarm.com.de

Aktualisieren Sie die Python-Pakete mit dem Befehl pip aus

Wie aktualisiere ich alle meine Python-Pakete mit dem Befehl pip aus der Datei Requirements.txt?

versuchte mit dem folgenden 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 das manuelle Editieren der Datei Requirements.txt?

EDIT

Wie Andy in seinen Antwortpaketen erwähnt, sind die Pakete an eine bestimmte Version gebunden. Daher ist es nicht möglich, Pakete über den Befehl pip zu aktualisieren.

Dies kann jedoch mit pip-tools mit dem folgenden Befehl erreicht werden.

$ pip-review --auto

dadurch werden automatisch alle Pakete von der Datei Requirements.txt aktualisiert (stellen Sie sicher, dass Sie pip-tools mit dem Befehl pip install installieren).

64
abhiomkar

Nein. Ihre Anforderungsdatei wurde angeheftet für bestimmte Versionen. Wenn Ihre Anforderungen auf diese Version festgelegt sind, sollten Sie nicht versuchen, ein Upgrade über diese Versionen hinaus durchzuführen. Wenn Sie zum Aktualisieren benötigen, müssen Sie in Ihrer Anforderungsdatei zu nicht fixierten Versionen wechseln.

Beispiel:

lxml>=2.2.0

Dies würde lxml auf eine neuere Version als 2.2.0 aktualisieren

lxml>=2.2.0,<2.3.0

Dies würde lxml auf die neueste Version zwischen 2.2.0 und 2.3.0 aktualisieren.

30
Andy

du kannst es versuchen:

pip install --upgrade --force-reinstall -r requirements.txt

Sie können das installierte Paket auch ignorieren und das neue installieren:

pip install -I, --ignore-installed -r requirements.txt
46
Freelancer

Ich habe diese Frage bereits beantwortet hier . Hier ist meine Lösung:

Da es keine einfache Möglichkeit gab, Paket für Paket zu aktualisieren und die Datei Requirements.txt zu aktualisieren, habe ich Folgendes geschrieben: pip-upgrader welches auch die Versionen Ihrer requirements.txt-Datei für die Pakete aktualisiert ausgewählt (oder alle Pakete).

Installation

pip install pip-upgrader

Verwendungszweck

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

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

pip-upgrade

Erweiterte Verwendung

Wenn die Anforderungen an einem nicht standardmäßigen Speicherort abgelegt werden, 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 Argumente:

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

Wenn Sie ein Upgrade auf die Vor-Release-/Post-Release-Version durchführen müssen, fügen Sie Ihrem Befehl das Argument --prerelease hinzu.

Vollständige Offenlegung: Ich habe dieses Paket geschrieben.

42

Da ich dies nicht mit bash tun konnte, schrieb ich ein Python-Modul, um eine neue Anforderungsdatei ohne Versionen zu erstellen und zu verwenden:

data = open('requirements-prod.pip', 'r')
data2 = open('requirements-prod-no-version.pip', 'w')
for line in data.readlines():
    new_line = line[:line.index('==')]
    data2.write(new_line + '\n')
data2.flush()

Dann installieren Sie die Libs aus der neuen Datei pip install -U -r requirements-prod-no-version.pip

Zum Schluss die Versionen in die Originaldatei einfrieren pip freeze > requirements-prod.pip

2
Montaro