Utwórz środowisko wirtualne Python 3

13

Zainstalowałem python3-virtualenvna Lubuntu 15.1 przy użyciu oficjalnego pakietu Ubuntu apt-get install python3-virtualenv. Oficjalna dokumentacja wskazuje, że prosty virtualenv .w moim katalogu projektu powinien być wystarczający, aby utworzyć venv. To nic nie robi, bo which virtualenvnic nie robi. (Nic z, which python-virtualenva which python3-virtualenvtakże).

Informacja o pakiecie, po zainstalowaniu, mówi, że została zainstalowana /usr/lib/python3/dist-packages/virtualenv.py, więc wywołuję to pod python3. Daje mi to:

$ python3 /usr/lib/python3/dist-packages/virtualenv.py .
Running virtualenv with interpreter /usr/bin/python2
New python executable in ./bin/python2
Also creating executable in ./bin/python
Installing setuptools, pip...done.

Tak, kiedy patrzę, wszystko w ./bin to python2. Czy ubhonu's python3-virtualenv jest atrapą pakietu dla python2?

Oficjalna dokumentacja Pythona mówi, że należy użyć innego pakietu: python3-venv . To wydaje się działać, gdy ja pyvenv ., z python3 rzeczy w ./binkatalogu.

Jak mogę pomyślnie utworzyć virtualenv Python 3?

Escher
źródło
Łatka zmieniająca to zachowanie w Debianie. salsa.debian.org/python-team/modules/python-virtualenv/blob/… Chciałbym zrozumieć proces myślowy zastosowany po dodaniu tej poprawki.
Winny

Odpowiedzi:

24

venvjest wygodnym skryptem do tworzenia wirtualnych środowisk, ale nie w pełni zastępuje wszystko, co virtualenvmożna zrobić. Jednak użycie obu jest w większości przypadków w porządku. virtualenvnie jest przestarzały.

python3 -m venvdziała po instalacji, python3-venvponieważ Debian usuwa niektóre skrypty z podstawowego pakietu Pythona. z jakiegoś powodu python3-virtualenvnie umieszcza virtualenvskryptu na twojej ścieżce, ale python-virtualenvdziała i będzie działać dobrze dla każdej wersji.

Nie ma znaczenia, dla której wersji virtualenvjest zainstalowana, może generować env dla każdej zainstalowanej wersji, przekazując -p pythonX(gdzie X jest wersją). venv, ponieważ jest prostszy, utworzy tylko envv wersji, z której jest uruchomiony, i jest dostępny tylko od wersji 3.3.

$ sudo apt-get install python-virtualenv
$ virtualenv -p python3 env
$ source ./env/bin/activate
$ sudo apt-get install python3-venv
$ python3 -m venv env
$ source ./env/bin/activate
dawidyzm
źródło