Ich würde nur die Verwendung von virtualenv
nach Python3.3 + vermeiden und stattdessen die standardmäßige ausgelieferte Bibliothek verwenden venv
. Um eine neue virtuelle Umgebung zu erstellen, geben Sie Folgendes ein:
$ python3 -m venv <MYVENV>
virtualenv
versucht, die Python-Binärdatei in das bin-Verzeichnis der virtuellen Umgebung zu kopieren. In diese Binärdatei eingebettete Bibliotheksdateiverknüpfungen werden jedoch nicht aktualisiert. Wenn Sie also Python aus dem Quellcode in ein Nicht-Systemverzeichnis mit relativen Pfadnamen erstellen, wird die Python-Binärdatei unterbrochen. Da Sie auf diese Weise eine kopierbare, verteilbare Python erstellen, ist dies ein großer Fehler. Übrigens, um eingebettete Bibliotheksdateilinks unter OS X zu überprüfen otool
. Geben Sie beispielsweise in Ihrer virtuellen Umgebung Folgendes ein:
$ otool -L bin/python
python:
@executable_path/../Python (compatibility version 3.4.0, current version 3.4.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0)
Folglich würde ich virtualenvwrapper
und vermeiden pipenv
. pyvenv
ist veraltet. pyenv
scheint oft dort virtualenv
verwendet zu werden, wo es verwendet wird, aber ich würde mich auch davon fernhalten, da ich denke, dass es venv
auch das tut, wofür pyenv
es gebaut wurde.
venv
Erstellt virtuelle Umgebungen in der Shell, die frisch und mit Sandboxen versehen sind , mit vom Benutzer installierbaren Bibliotheken und ist für mehrere Pythons sicher . Neu, da virtuelle Umgebungen nur mit den Standardbibliotheken beginnen, die im Lieferumfang von Python enthalten sind, müssen Sie alle anderen Bibliotheken erneut installieren, pip install
während die virtuelle Umgebung aktiv ist. Sandboxed, da keine dieser neuen Bibliotheksinstallationen außerhalb der virtuellen Umgebung sichtbar ist. Sie können also die gesamte Umgebung löschen und erneut starten, ohne sich Gedanken über die Auswirkungen auf Ihre Basis-Python-Installation machen zu müssen. Vom Benutzer installierbare Bibliotheken, da der Zielordner der virtuellen Umgebung ohne erstellt wirdsudo
In einem Verzeichnis, das Sie bereits besitzen, benötigen Sie keine sudo
Berechtigungen, um Bibliotheken darin zu installieren. Schließlich ist es Multi-Python-sicher , da bei der Aktivierung virtueller Umgebungen in der Shell nur die Python-Version (3.4, 3.5 usw.) angezeigt wird, die zum Erstellen dieser virtuellen Umgebung verwendet wurde.
pyenv
ähnelt darin, venv
dass Sie damit mehrere Python-Umgebungen verwalten können. Jedoch mit pyenv
Sie können nicht bequem Rollback - Bibliothek installiert zu einem gewissen Startzustand und Sie werden wahrscheinlich brauchen admin
Privilegien zu einem bestimmten Zeitpunkt zu aktualisieren Bibliotheken. Daher denke ich, dass es auch am besten ist, es zu verwenden venv
.
In den letzten Jahren habe ich viele Probleme bei Build-Systemen (Emacs-Pakete, eigenständige Python-Anwendungs-Builder, Installer ...) festgestellt, die letztendlich auf Probleme mit zurückzuführen sind virtualenv
. Ich denke, Python wird eine bessere Plattform sein, wenn wir diese zusätzliche Option eliminieren und nur verwenden venv
.