405 Stimmen

Wie installiert man mit pip ein Paket mit minimaler und maximaler Versionsspanne?

Ich frage mich, ob es eine Möglichkeit gibt, pip zu sagen, speziell in einer Anforderungsdatei, ein Paket sowohl mit einer Mindestversion zu installieren ( pip install package>=0.2 ) und eine maximale Version, die niemals installiert werden sollte (theoretische api: pip install package<0.3 ).

Ich frage, weil ich eine Bibliothek eines Drittanbieters verwende, die sich in aktiver Entwicklung befindet. Ich möchte, dass meine pip-Anforderungsdatei angibt, dass sie immer die neueste Nebenversion des 0.5.x-Zweigs installieren soll, aber ich möchte nicht, dass pip jemals versucht, neuere Hauptversionen (wie 0.6.x) zu installieren, da die API anders ist. Das ist wichtig, denn obwohl der 0.6.x-Zweig verfügbar ist, veröffentlichen die Entwickler immer noch Patches und Bugfixes für den 0.5.x-Zweig, also möchte ich keine statische package==0.5.9 Zeile in meiner Anforderungsdatei.

Gibt es eine Möglichkeit, das zu tun?

552voto

Hugo Tavares Punkte 25804

Das können Sie tun:

$ pip install "package>=0.2,<0.3"

Und pip sucht nach der besten Übereinstimmung, vorausgesetzt, die Version ist mindestens 0.2 und weniger als 0.3.

Dies gilt auch für pip Anforderungsdateien . Ausführliche Informationen zu Versionsangaben finden Sie in PEP 440 .

176voto

lowrin Punkte 2005

Können Sie auch verwenden:

pip install package==0.5.*

die kohärenter und leichter zu lesen ist.

176voto

Moritz Punkte 2149

Eine elegante Methode wäre die Verwendung der ~= kompatibler Auslöser nach PEP 440 . In Ihrem Fall würde dies bedeuten:

package~=0.5.0

Wenn beispielsweise die folgenden Versionen existieren, würde es folgende Versionen auswählen 0.5.9 :

  • 0.5.0
  • 0.5.9
  • 0.6.0

Zur Verdeutlichung: Jedes Paar ist gleichwertig:

~= 0.5.0
>= 0.5.0, == 0.5.*

~= 0.5
>= 0.5, == 0.*

13voto

Darius Punkte 8312

nok.github.io/pipdev ist ein interaktives Werkzeug für Entwickler, um definierte Spezifizierer für die Versionsbehandlung zu testen.

enter image description here

Bezogen auf die Frage: nok.github.io/pipdev?spec=~=0.5.0&vers=0.6

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