virtualenvwrapper i Python 3

119

Zainstalowałem Python 3.3.1 na Ubuntu lucid i pomyślnie utworzyłem virtualenv, jak poniżej

virtualenv envpy331 --python=/usr/local/bin/python3.3

stworzyło to folder envpy331w moim katalogu domowym.

virtualenvwrapperZainstalowałem również. Ale w dokumentach obsługiwane są tylko 2.4-2.7wersje ... Czy pythonktoś próbował zorganizować python3virtualenv? Jeśli tak, czy możesz mi powiedzieć, jak to zrobić?

damon
źródło
1
Problem polega na tym, że pip nadal jest pipem python2, prawda? Myślę, że pyvenvzamiast tego chcesz użyć virtualenvwrappervirtualenv
erikbwork

Odpowiedzi:

240

Jeśli masz już zainstalowany python3 również virtualenvwrapper, jedyną rzeczą, którą musisz zrobić, aby używać python3 w środowisku wirtualnym, jest utworzenie środowiska za pomocą:

which python3 #Output: /usr/bin/python3
mkvirtualenv --python=/usr/bin/python3 nameOfEnvironment

Lub (przynajmniej na OSX używającym naparu):

mkvirtualenv --python=`which python3` nameOfEnvironment

Zacznij korzystać ze środowiska, a zobaczysz, że jak tylko wpiszesz python, zaczniesz używać python3

Jonathan
źródło
12
Nie całkiem działało dla mnie na OSX z 2.7.8 i 3.4.1 zainstalowanymi obok siebie przez brew. Zmodyfikowanie go na "mkvirtualenv --python =` który python3` nameOfEnvironment "działało idealnie.
Chris Doggett
@ChrisDoggett to samo na Ubuntu 14.10.
z0r
4
W systemie Ubuntu polecenie będzie wyglądać następująco: mkvirtualenv --python = / usr / bin / python3 your-env-name
Vasiliy Toporov
2
Jeśli używasz basha, możesz dokonać zmiany, aby zapisać linię -mkvirtualenv --python=$(which python3) nameOfEnvironment
d4nyll
naprawdę świetne jest utworzenie następującego aliasu bash alias mkvirtualenv3="mkvirtualenv --python=$(which python3.6)"- wtedy łatwo jest tworzyć virtualenvy dla Pythona 2 lub 3
robertmoggach
52

Możesz sprawić, by virtualenvwrapper używał niestandardowego pliku binarnego Pythona zamiast tego, z którym jest uruchamiany virtualenvwrapper. Aby to zrobić, musisz użyć zmiennej VIRTUALENV_PYTHON, z której korzysta virtualenv:

$ export VIRTUALENV_PYTHON=/usr/bin/python3
$ mkvirtualenv -a myproject myenv
Running virtualenv with interpreter /usr/bin/python3
New python executable in myenv/bin/python3
Also creating executable in myenv/bin/python
(myenv)$ python
Python 3.2.3 (default, Oct 19 2012, 19:53:16) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Iliyan Bobev
źródło
2
To jest faktycznie nieaktualne. Zamiast ustawiać zmienną środowiskową, powinieneś użyć parametru --python, który jest obecnie sugerowany przez Jonathana.
AlexLordThorsen
6
@Rawrgulmuffins Dlaczego? Zapobiega to konieczności określania wersji Pythona dla każdego nowego środowiska.
Joost
@Joost To słuszna uwaga. Osobiście uważam, że to wada, ale rozumiem, dlaczego ludzie woleliby to.
AlexLordThorsen
21

virtualenvwrapper pozwala teraz określić plik wykonywalny Pythona bez ścieżki.

Więc (przynajmniej na OSX) mkvirtualenv --python=python3 nameOfEnvironmentwystarczy.

Peter Yin
źródło
2
Potrzebuje dwóch myślników. Edytuje, ale SE wymaga 6 znaków, a zmiana wymaga tylko jednego.
jwogrady
20

Na Ubuntu; za pomocąmkvirtualenv -p python3 env_name ładuje virtualenv za pomocą python3.

Wewnątrz env użyj python --versiondo weryfikacji.

akashbw
źródło
1
python --versionaby wyświetlić wersję
Dos
20

Możesz dodać to do swojego .bash_profile lub podobnego:

alias mkvirtualenv3='mkvirtualenv --python=`which python3`'

Następnie użyj mkvirtualenv3zamiast, mkvirtualenvgdy chcesz utworzyć środowisko Python 3.

chorbs
źródło
13

Uważam, że działa

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

i

export VIRTUALENVWRAPPER_VIRTUALENV=/usr/bin/virtualenv-3.4

w wierszu poleceń w systemie Ubuntu zmusza mkvirtualenv do używania python3 i virtualenv-3.4. Nadal trzeba zrobić

mkvirtualenv --python=/usr/bin/python3 nameOfEnvironment

stworzyć środowisko. Zakłada się, że masz python3 w / usr / bin / python3 i virtualenv-3.4 w /usr/local/bin/virtualenv-3.4.

Ciekawski George
źródło
Po prostu użyj which python2.4lub which python3.5lub, which python3.6aby znaleźć katalog--python=DIRECTORY
Santhosh
5

Ten post w narzędziu do śledzenia problemów z bitbucket w virtualenvwrapper może być interesujący. Wspomniano tam, że większość funkcji virtualenvwrapper współpracuje z wirtualnymi środowiskami venv w Pythonie 3.3.

Ioannis Filippidis
źródło
0

Dodałem export VIRTUALENV_PYTHON=/usr/bin/python3do mojego ~/.bashrc:

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENV_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

następnie uruchomić source .bashrc

i możesz określić wersję Pythona dla każdego nowego pliku env mkvirtualenv --python=python2 env_name

Mustapha-Belkacim
źródło