Ich würde nur die Verwendung von virtualenvnach 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>
virtualenvversucht, 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 virtualenvwrapperund vermeiden pipenv. pyvenvist veraltet. pyenvscheint oft dort virtualenvverwendet zu werden, wo es verwendet wird, aber ich würde mich auch davon fernhalten, da ich denke, dass es venvauch das tut, wofür pyenves gebaut wurde.
venvErstellt 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 installwä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 wirdsudoIn einem Verzeichnis, das Sie bereits besitzen, benötigen Sie keine sudoBerechtigungen, 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, venvdass Sie damit mehrere Python-Umgebungen verwalten können. Jedoch mit pyenvSie können nicht bequem Rollback - Bibliothek installiert zu einem gewissen Startzustand und Sie werden wahrscheinlich brauchen adminPrivilegien 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.