[PYTHON] Mechanismus von Pyenv und Virtualenv

Zweck dieses Artikels

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.

Referenzseite

yyuu/pyenv virtualenv

pyenv

Überblick

Ein Tool zur Verwendung verschiedener Python-Versionen innerhalb desselben Terminals. Sie können die für jedes Arbeitsverzeichnis zu verwendende Python-Version festlegen.

Wie es funktioniert

Komponente

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.

Einstellscheibe und Versionsschaltmechanismus

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.

  1. Untersuchen Sie die Umgebungsvariable PYENV_VERSION und verwenden Sie gegebenenfalls die Versionsinformationen.

  2. 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.

  3. Wenn die Datei ".python-version" nicht im selben Verzeichnis vorhanden ist, durchsuchen Sie das übergeordnete Verzeichnis nach der Datei ".python-version".

  4. 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.

virtualenv

Mit virtualenv erstelltes Verzeichnis

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 

Umgebungsvariablen, die durch das Aktivierungsskript festgelegt wurden

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

Zusammenfassung

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

Mechanismus von Pyenv und Virtualenv
Python-Entwicklungsumgebung - Verwendung von Pyenv und Virtualenv-
Koexistenz von Pyenv und Autojump
Eine Geschichte über das Ausprobieren von pyenv, virtualenv und virtualenvwrapper
Installieren Sie pyenv und pyenv-virtualenv
Zusammenfassung der Verwendung von pyenv
Pyenv + virtualenv auf dem Mac
Einführung des Virtualenv-Wrappers
Das Problem der Lügner und der Ehrlichkeit
Vor- und Nachbearbeitung von Pytest
Kombination von rekursiv und Generator
Kombination von anyenv und direnv
Erklärung und Implementierung von SocialFoceModel
Anmerkungen zu Pyenv und Atom
Differenzierung der Sortierung und Verallgemeinerung der Sortierung
Einführung von Kaffee mit Pyenv
Verwendung und Integration von "Shodan"
Das Problem der Lügner und der Ehrlichkeit
Python mit Pyenv und Venv
Catalina auf Mac und Pyenv
Auftreten und Auflösung von tensorflow.python.framework.errors_impl.FailedPreconditionError
[Python] Anaconda, pyenv, virtualenv, .bash_profile
Vergleich von Apex und Lamvery
Quellinstallation und Installation von Python
Einführung und Tipps von mlflow.Tracking
Spielen Sie mit dem Passwortmechanismus von GitHub Webhook und Python
[Erforderliches Thema DI] Implementieren und verstehen Sie den Mechanismus von DI mit Go
Installationsverfahren + Verwendung von "virtualenv" und "pythonz" in der Mountain Lion-Umgebung
Umgebungskonstruktion von Python und OpenCV
Grundkenntnisse in Linux und Grundbefehle
Die Geschichte von Python und die Geschichte von NaN
Erläuterung und Implementierung von PRML Kapitel 4
Erhöhen Sie die Version von pyenv selbst
Einführung und Implementierung von JoCoR-Loss (CVPR2020)
Vorteile und Beispiele für die Verwendung von Rabbit Mq
Erklärung und Implementierung des ESIM-Algorithmus
Mischgefahr! Ndarray und Matrix
Installation von SciPy und matplotlib (Python)
Bedeutung des maschinellen Lernens und des Mini-Batch-Lernens
Einführung und Implementierung der Aktivierungsfunktion
Memorandum zum Speichern und Laden des Modells
Ich habe den Mechanismus der Flaschenanmeldung untersucht!
pyenv-change die Python-Version von virtualenv
Missverständnisse und Interpretationen von Luigis Abhängigkeiten
Erklärung und Implementierung von einfachem Perzeptron
Berechnung der selbst erstellten Klasse und der vorhandenen Klasse
Dies und das von Python-Eigenschaften
Versuchsplanungsmethode und Kombinationsoptimierung
Ansible Playbook zum Installieren und Konfigurieren von `pyenv`
Merkmale der symbolischen und harten Verbindung
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Zusammenfassung der Python-Indizes und -Slices
Aggregation und Visualisierung akkumulierter Zahlen
Reputation von Python-Büchern und Nachschlagewerken
Erstellen einer Umgebung mit pyenv und pyenv-virtualenv
Verwenden Sie pydoc mit Virtualenv / pyenv / venv