2016-05-04 19 views
1

Ich möchte das Verhalten --upgrade von außerhalb der Build-Skripte steuern und ich frage mich, ob es eine PIP_... Variable, die ich konfigurieren kann, die von PIP standardmäßig verwendet wird, ohne dass ich es zu jeder Befehlszeile hinzufügen.Gibt es eine Pip-Umgebungsvariable, die für zusätzliche Parameter verwendet werden kann?

Die Dokumentation sagt etwas über PIP_ environment variables aber versäumt, eine Liste von ihnen zu erwähnen.

+0

Sie können die 'PIP _...' Umgebungsvariablen auf Benutzerbasis erstellen! Es gibt also keine Liste, weil Sie entscheiden, was die 'PIP _...' env-Variablen sind. Wenn Sie Linux verwenden, müssen Sie lediglich eine Umgebungsvariable zur Konfigurationsdatei hinzufügen, die Sie hier finden: '$ HOME/.config/pip/pip.conf'. Also, für Ihre spezielle Option '--upgrade' müssen Sie nur eine Zeile unter dem Befehl hinzufügen, an dem Sie interessiert sind (zB' [install] ') oder wenn Sie möchten, dass sie immer dann angewendet wird, wenn Sie Aufrufupgrade unter '[global]'. Diese Zeile würde ein wenig wie folgt aussehen: "upgrade = specify-your-option-choice-here". –

+0

Haben Sie immer noch Probleme mit diesem Thema? Wenn ja, bitte klären Sie weiter, was Ihr Problem ist. Wenn Sie eine Lösung für Ihr Problem gefunden haben, empfehle ich Ihnen, eine eigene schnelle Antwort zu erstellen und diese zu akzeptieren, damit diese Frage geschlossen wird. –

Antwort

0

Kurze Antwort:

EDIT: eine Anforderung Spezifikationsdatei erstellen, die alle Pakete enthält, die Sie aktualisieren möchten, dann sind sowohl die Anforderung Spezifikationstextdatei und das Upgrade-Verhalten Ihren Wunsch in Ihre Konfigurationsdatei. Jetzt können Sie mit einem einfachen Befehl, pip install, eine beliebige Anzahl von Paketen und eine bestimmte Version dieser Pakete aktualisieren.

Während ich mit Umgebungsvariablen keine Ein-Zeilen-Lösung für dieses Problem finden kann, können Sie Umgebungsvariablen nutzen, um so viele Pakete zu aktualisieren, ohne die Option --upgrade jedes Installationsbefehls zu verwenden (siehe unten).

  1. Um das Upgrade Verhalten zu steuern, Ihre pip Umgebungsvariable aktualisieren: export PIP_UPGRADE=True.

  2. Um das zu aktualisierende Paket anzugeben, führen Sie den Installationsbefehl aus, an den Sie gewöhnt sind: pip install specifiedPackage.

Es gibt keine umfassende Liste von pip Umgebungsvariablen, weil sie etwas sind, die für benutzerdefinierte vom Benutzer/Benutzergruppe hinzugefügt wird. Sie können das Verhalten der --upgrade Option für alle pip Befehle oder nur bestimmte (wie pip install) über Ihre pip Konfigurationsdatei steuern.

Lange Antwort:

EDIT:Mit Anforderung Anforderung Dateien: Sie können einfache Anforderung Spezifikationstextdateien erstellen Pakete geben Sie installieren möchten. Tatsächlich können Sie sogar bestimmte Versionen dieser Pakete in diesen Dateien angeben (wenn Sie eine ältere Version installieren oder eine bestimmte Version vermeiden möchten). Eine Anforderung Datei, myRequirements.txt, wie diese (vor allem aus here kopiert) aussehen:

# 
####### myRequirements.txt ####### 
# 
###### Requirements without Version Specifiers ###### 
nose 
nose-cov 
beautifulsoup4 
# 
###### Requirements with Version Specifiers ###### 
# See https://www.python.org/dev/peps/pep-0440/#version-specifiers 
docopt == 0.6.1    # Version Matching. Must be version 0.6.1 
keyring >= 4.1.1   # Minimum version 4.1.1 
coverage != 3.5    # Version Exclusion. Anything except version 3.5 
Mopidy-Dirble ~= 1.1  # Compatible release. Same as >= 1.1, == 1.* 
# 
###### Refer to other requirements files ###### 
-r myOtherRequirements.txt 
# 
# 
###### A particular file ###### 
./downloads/numpy-1.9.2-cp34-none-win32.whl 
http://wxpython.org/Phoenix/snapshot-builds/wxPython_Phoenix-3.0.3.dev1820+49a8884-cp34-none-win_amd64.whl 
# 
###### Additional Requirements without Version Specifiers ###### 
# Same as 1st section, just here to show that you can put things in any order. 
anotherPackage 
yetAnotherPackage 
# 

Konfigurationsdatei zu finden: Alle pip Kommandozeilenoptionen und Umgebungsvariablen werden in einer Konfigurationsdatei festgelegt. Abhängig davon, welches Betriebssystem Sie pip installiert haben, wird sich der Pfad zur Konfigurationsdatei ändern ... finden Sie in der gleichen Dokumentation, here.

Bearbeiten Sie Ihre Konfigurationsdatei: Die Organisation ist ziemlich einfach. Wenn Sie möchten, dass die Änderung der Befehlszeilenoption alle pip-Befehle betrifft, dann fügen Sie sie unter eine [global]-Anweisung ein. Wenn Sie möchten, dass nur ein einzelner Befehl (d. H., pip install) dann stellen Sie es unter eine [command-here] Anweisung (d. H. [install]). So in der Zusammenfassung würde es in etwa so aussehen:

[install] 
upgrade = True 
requirement = /path/to/myRequirements.txt 

über die Befehlszeile: Nun, da Sie überschrieb die Nützlichkeit des pip install Befehl haben und Sie haben Ihre Anforderungen Spezifikationsdatei angegeben enthalten alle Pakete Sie möchten ein Upgrade durchführen (und die Version, auf die Sie aufrüsten möchten - falls gewünscht). Sie können einfach pip install aufrufen, und Sie erhalten den gleichen Effekt wie beim Aufruf von pip install --upgrade -r myRequirements.txt, bevor Sie das Verhalten des --upgrade überschreiben und -r Optionen.

Hinweis auf pip Umgebungsvariablen: Ich denke, Sie haben gerade die Dokumentation in der falschen Reihenfolge gelesen. Sie verwenden die Umgebungsvariablen erst, nachdem Sie etwas in der Konfigurationsdatei hinzugefügt/geändert haben. Mit dem obigen Beispiel würden Sie den Befehl export PIP_UPGRADE=True und dann pip install somePackage ausführen. Die beiden Befehle, die ich gerade geschrieben habe, hätten den gleichen Effekt wie der Befehl pip install --upgrade somePackage. Sie müssen nur Umgebungsvariablen verwenden, wenn Sie das Verhalten der Option --upgrade von dem ändern wollen, was Sie in der Konfigurationsdatei festgelegt haben!

+0

Danke für die Antwort, es erklärt sehr gut, wie pip env Variablen, Konfigurationsoptionen und Befehlszeilenargumente funktionieren. Dennoch gibt es nur eine Sache, die ich nicht verstehe: Die Option --upgrade nimmt KEINE Parameter, Sie sollten PIP_UPGRADE = True verwenden, um den Upgrade-Modus zu aktivieren, aber die Argumente/Pakete können nicht mit env-Variablen oder innerhalb von config angegeben werden Dateien. Das ist mein Eindruck. – sorin

+0

Ich entschuldige mich, meine Antwort war völlig falsch. Ich werde einige Möglichkeiten testen, um zu sehen, ob es eine Möglichkeit gibt, das Paket, das installiert werden soll, aus der Konfigurationsdatei anzugeben. Für den Moment habe ich meine Antwort aktualisiert, um korrekt wiederzugeben, wie Sie die Umgebungsvariable 'PIP_UPGRADE' nutzen würden, um mehrere Pakete zu aktualisieren, ohne die Option '--upgrade' verwenden zu müssen. –

+0

Es sind keine Umgebungsvariablen, aber 'pip' enthält [Spezifikationsdateien für Anforderungen] (https://pip.pypa.io/en/latest/reference/pip_install/#example-requirements-file), die Sie zum Angeben von Paketen erstellen können zu installieren (und sogar angeben, welche Versionen der Pakete Sie installieren möchten, wenn Sie eine ältere Version installieren möchten). Nachdem Sie eine Anforderungsdatei 'myRequirements.txt' erstellt haben, können Sie alle Pakete, auf die in dieser Datei verwiesen wird, mit' pip install -r myRequirements.txt' installieren. Jetzt können Sie unter dem '[install]' - Header eine Zeile wie 'anforderung = myRequirements.txt' hinzufügen. –

Verwandte Themen