virtualenvwrapper e Python 3

119

Instalei o python 3.3.1 no ubuntu lucid e criei com sucesso um virtualenv como abaixo

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

isso criou uma pasta envpy331no meu diretório inicial.

Eu também virtualenvwrapperinstalei. Mas nos docs apenas as 2.4-2.7versões do pythonsão suportadas .. Alguém tentou organizar o python3virtualenv? Se sim, você pode me dizer como?

Damon
fonte
1
O problema com isso é que o pip ainda é o pip do python2, não é? Acho que o que você quer é o virtualenvwrapper para usar em pyvenvvez devirtualenv
erikbwork

Respostas:

240

Se você já tem o python3 instalado também o virtualenvwrapper, a única coisa que você precisa fazer para usar o python3 com o ambiente virtual é criar um ambiente usando:

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

Ou, (pelo menos no OSX usando cerveja):

mkvirtualenv --python=`which python3` nameOfEnvironment

Comece a usar o ambiente e você verá que assim que digitar python, começará a usar python3

Jonathan
fonte
12
Não funcionou muito bem para mim no OSX com 2.7.8 e 3.4.1 instalados lado a lado via brew. Porém, modificá-lo para "mkvirtualenv --python =` which python3` nameOfEnvironment "funcionou perfeitamente.
Chris Doggett
@ChrisDoggett mesmo no Ubuntu 14.10.
z0r
4
No Ubuntu, o comando será: mkvirtualenv --python = / usr / bin / python3 seu-env-nome
Vasiliy Toporov
2
Se você usar o bash, poderá fazer a substituição para salvar uma linha -mkvirtualenv --python=$(which python3) nameOfEnvironment
d4nyll
o que é realmente ótimo é criar o seguinte alias de bash alias mkvirtualenv3="mkvirtualenv --python=$(which python3.6)"- então é fácil criar virtualenvs para python 2 ou 3
robertmoggach
52

Você pode fazer o virtualenvwrapper usar um binário Python personalizado em vez do virtualenvwrapper com o qual é executado. Para fazer isso, você precisa usar a variável VIRTUALENV_PYTHON, que é utilizada pelo 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
fonte
2
Isso está efetivamente desatualizado. Em vez de definir uma variável de ambiente, você deve usar o parâmetro --python atualmente sugerido por Jonathan.
AlexLordThorsen
6
@Rawrgulmuffins Por quê? Isso evita ter que especificar a versão python para cada novo env.
Joost
@Joost Esse é um ponto justo. Eu pessoalmente sinto que isso é uma desvantagem, mas posso ver por que as pessoas preferem isso.
AlexLordThorsen
21

virtualenvwrapper agora permite que você especifique o executável python sem o caminho.

Portanto (pelo menos no OSX) mkvirtualenv --python=python3 nameOfEnvironmentserá suficiente.

Peter Yin
fonte
2
Precisa de dois travessões. Editaria, mas SE requer 6 caracteres e a mudança só precisa de um.
jwogrady
20

No Ubuntu; using mkvirtualenv -p python3 env_namecarrega o virtualenv com python3.

Dentro do env, use python --versionpara verificar.

Akashbw
fonte
1
python --versionpara exibir a versão
Dos
20

Você pode adicionar isso ao seu .bash_profile ou semelhante:

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

Em seguida, use em mkvirtualenv3vez de mkvirtualenvquando quiser criar um ambiente python 3.

chorbs
fonte
13

Eu acho que está correndo

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

e

export VIRTUALENVWRAPPER_VIRTUALENV=/usr/bin/virtualenv-3.4

na linha de comando do Ubuntu força mkvirtualenv a usar python3 e virtualenv-3.4. Ainda falta fazer

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

para criar o ambiente. Isso pressupõe que você tenha python3 em / usr / bin / python3 e virtualenv-3.4 em /usr/local/bin/virtualenv-3.4.

George curioso
fonte
Use which python2.4ou which python3.5ou which python3.6para localizar o diretório de--python=DIRECTORY
Santhosh
5

Esta postagem sobre o rastreador de problemas de bitbucket do virtualenvwrapper pode ser interessante. É mencionado lá que a maioria das funções do virtualenvwrapper funcionam com os ambientes virtuais venv no Python 3.3.

Ioannis Filippidis
fonte
0

Eu adicionei export VIRTUALENV_PYTHON=/usr/bin/python3ao meu ~/.bashrcassim:

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

então corra source .bashrc

e você pode especificar a versão python para cada novo env mkvirtualenv --python=python2 env_name

Mustapha-Belkacim
fonte