Po prostu unikałbym używania programu virtualenv
po Python3.3 + i zamiast tego używałbym standardowej biblioteki dostarczonej venv
. Aby utworzyć nowe środowisko wirtualne, wpisz:
$ python3 -m venv <MYVENV>
virtualenv
pró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 virtualenvwrapper
i pipenv
. pyvenv
jest przestarzałe. pyenv
wydaje się być używany często tam, gdzie virtualenv
jest używany, ale trzymałbym się z dala od niego również, ponieważ myślę, że venv
robi to, co pyenv
jest zbudowane.
venv
tworzy ś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 install
gdy ś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 bezsudo
w jakimś katalogu, który już posiadasz, więc nie będziesz potrzebować sudo
uprawnień 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.
pyenv
jest podobny do venv
tego, że pozwala zarządzać wieloma środowiskami Pythona. Jednak pyenv
nie możesz wygodnie wycofać instalacji bibliotek do stanu początkowego i prawdopodobnie będziesz potrzebować admin
uprawnień 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
.