Po prostu unikałbym używania programu virtualenvpo Python3.3 + i zamiast tego używałbym standardowej biblioteki dostarczonej venv. Aby utworzyć nowe środowisko wirtualne, wpisz:
$ python3 -m venv <MYVENV>
virtualenvpróbuje skopiować plik binarny Python do katalogu bin środowiska wirtualnego. Jednak nie aktualizuje łączy plików bibliotek osadzonych w tym pliku binarnym, więc jeśli zbudujesz Pythona ze źródła w katalogu niesystemowym o względnych nazwach ścieżek, plik binarny Pythona ulegnie awarii. Ponieważ w ten sposób tworzysz kopię Pythona do dystrybucji, jest to duża wada. BTW, aby sprawdzić osadzone łącza plików bibliotek w OS X, użyj otool. Na przykład w środowisku wirtualnym wpisz:
$ 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)
W związku z tym unikałbym virtualenvwrapperi pipenv. pyvenvjest przestarzałe. pyenvwydaje się być używany często tam, gdzie virtualenvjest używany, ale trzymałbym się z dala od niego również, ponieważ myślę, że venvrobi to, co pyenvjest zbudowane.
venvtworzy środowiska wirtualne w powłoce, które są świeże i w piaskownicy , z bibliotekami instalowanymi przez użytkownika i jest bezpieczne dla wielu Pythona . Świeżo, ponieważ środowiska wirtualne zaczynają się tylko od standardowych bibliotek dostarczanych z Pythonem, musisz zainstalować wszystkie inne biblioteki od nowa, pip installgdy środowisko wirtualne jest aktywne. Piaskownica, ponieważ żadna z tych nowych instalacji bibliotek nie jest widoczna poza środowiskiem wirtualnym, dzięki czemu można usunąć całe środowisko i rozpocząć od nowa bez obawy o wpływ na podstawową instalację Pythona. Biblioteki instalowane przez użytkownika, ponieważ folder docelowy środowiska wirtualnego jest tworzony bezsudow jakimś katalogu, który już posiadasz, więc nie będziesz potrzebować sudouprawnień do instalowania w nim bibliotek. Wreszcie jest bezpieczny dla wielu Pythona , ponieważ po aktywacji środowisk wirtualnych powłoka widzi tylko wersję Pythona (3.4, 3.5 itd.), Która została użyta do zbudowania tego środowiska wirtualnego.
pyenvjest podobny do venvtego, że pozwala zarządzać wieloma środowiskami Pythona. Jednak pyenvnie możesz wygodnie wycofać instalacji bibliotek do stanu początkowego i prawdopodobnie będziesz potrzebować adminuprawnień do aktualizacji bibliotek. Myślę więc, że najlepiej też użyć venv.
W ciągu ostatnich kilku lat znalazłem wiele problemów w systemach kompilacji (pakiety emacs, samodzielne konstruktory aplikacji python, instalatory ...), które ostatecznie sprowadzają się do problemów virtualenv. Myślę, że Python będzie lepszą platformą, kiedy wyeliminujemy tę dodatkową opcję i użyjemy tylko venv.