Erklären Sie, wie pyenv und virtualenv eine Python-Ausführungsumgebung erstellen. Es wird nicht besonders erwähnt, wie es installiert oder verwendet wird. Die Erklärung ist eine Übersetzung der Referenzseite, und es gibt keine weiteren Informationen.
Ein Tool zur Verwendung verschiedener Python-Versionen innerhalb desselben Terminals. Sie können die für jedes Arbeitsverzeichnis zu verwendende Python-Version festlegen.
Jede von pyenv installierte Python-Version wird wie folgt gespeichert. Der von pyenv angegebene Versionsname entspricht übrigens dem Ordnernamen.
pyenv_structure
$HOME/.pyenv/shims/ #Der Kern der Funktionsweise von Pyenv. Jeder Shim-Befehl wird platziert.
|-/versions/2.7.8/ #Installierter Python-Interpreter
|-/3.4.2/ #2 als Beispiel.7.8, 3.4.2, pypy-2.4.Wenn Sie 0 installieren, sieht es so aus
|-/pypy-2.4.0/
|-/version #Versionsinformationsdatei für Python, die in global verwendet wird
Sie können auch den Befehl "python local" verwenden, um die Datei ".python-version" in einem beliebigen Arbeitsverzeichnis abzulegen.
Der Befehl "python global" bearbeitet die Datei "$ HOME / .pyenv / version".
Wie der Name schon sagt, beschreiben die Dateien ".python-version" und "$ HOME / .pyenv / version" nur die Versionsinformationen von Python, die verwendet werden sollen.
Und der Befehl shim wird unter $ HOME / .pyenv / shims / erstellt. Dies wird im nächsten Abschnitt erläutert.
Der Befehl shim hat denselben Namen wie der Befehl python (Python, pip usw.) und ist eine Gruppe von Befehlen in $ HOME / .pyenv / shims /
. Kurz gesagt, es ist ein Befehl, der den Befehl mit demselben Namen wie die entsprechende Version ausführt, nachdem nach Versionsinformationen gesucht wurde. Das spezifische Verfahren ist wie folgt.
Untersuchen Sie die Umgebungsvariable PYENV_VERSION
und verwenden Sie gegebenenfalls die Versionsinformationen.
Wenn die Umgebungsvariable PYENV_VERSION
keine Informationen enthält und sich die Datei .python-version
im selben Verzeichnis befindet, verwenden Sie die darin beschriebene Version.
Wenn die Datei ".python-version" nicht im selben Verzeichnis vorhanden ist, durchsuchen Sie das übergeordnete Verzeichnis nach der Datei ".python-version".
Wenn die Versionsinformationen bei der obigen Suche nicht gefunden werden, verwenden Sie die in der Datei ~ / .pyenv / version
beschriebenen Informationen. Wenn Sie diese Datei noch nicht einmal haben, verwenden Sie Python im Systemstandard.
Um diesen shim-Befehl verwenden zu können, müssen Sie "$ HOME / .pyenv / shims /" links neben dem Pfad festlegen, in dem sich der Systemstandardbefehl befindet.
Beispiel
~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin
Übrigens ist "pyenv rehash" ein Befehl zum Neukonfigurieren dieses Shims-Befehls basierend auf der aktuell installierten Python-Versionsgruppe.
Mit dem Befehl virtualenv können Sie in jedem Verzeichnis eine Python-Ausführungsumgebung erstellen. Diese Verzeichnisstruktur ist einfach dieselbe wie das Python-Interpreter-Verzeichnis. Python-Befehle scheinen sich auf die Verzeichnisse include, lib in ihrem übergeordneten Verzeichnis zu beziehen. Virtualenv erstellt also nur diese Verzeichnisstruktur und füllt sie mit den benötigten Dingen. Python-Befehle usw. haben übrigens nur symbolische Links. Wenn Sie das Original kopieren möchten, verwenden Sie die Option "--always-copy".
# $VIRTUAL_ENV ist ein Verzeichnis, das mit dem Befehl virtualenv erstellt wurde
$VIRTUAL_ENV/bin/ # Python,Ausführungsdateien wie pip
|-/include/ #C-Header wird platziert
|-/lib/ #Zusätzliche Bibliotheken werden platziert
|-/pythonX.X/site-package
Fügen Sie einfach "$ VIRTUAL_ENV / bin" zu "$ PATH" hinzu. Selbst wenn Sie Python als "$ VIRTUAL_ENV / bin / python" ausführen, können Sie Python anscheinend problemlos in der virtuellen Umgebung ausführen.
activate
#Auszug aus dem Aktivierungsskript
PATH="$VIRTUAL_ENV/bin:$PATH"
unset PYTHONHOME
Der Mechanismus der Unterlegscheibe in Pyenv ist ein wenig interessant. Was virtualenv macht, ist nicht so kompliziert. Wenn Sie die in pyenv installierte Version verwenden möchten, können Sie wie folgt vorgehen.
$ virtualenv path-to-desired-env --python=$HOME/.pyenv/versions/2.7.8/
Recommended Posts