Crie um ambiente virtual Python 3

13

Eu instalei python3-virtualenvno Lubuntu 15.1 usando o pacote oficial do Ubuntu apt-get install python3-virtualenv. A documentação oficial indica que um simples virtualenv .no diretório do meu projeto deve ser suficiente para criar o venv. Isso não faz nada, porque which virtualenvnão faz nada. (Nada de which python-virtualenve which python3-virtualenvtambém).

As informações do pacote, uma vez instaladas, /usr/lib/python3/dist-packages/virtualenv.pyindicam que foram instaladas , portanto, eu as invoco em python3. Isso me dá o seguinte:

$ 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.

Sim, quando olho, tudo em ./bin é python2. O python3-virtualenv do ubuntu é um pacote fictício para python2?

A documentação oficial do python diz que use um pacote diferente: python3-venv . Isso parece funcionar quando eu pyvenv ., com coisas python3 no ./bindiretório

Como posso criar com êxito um virtualenv do Python 3?

Escher
fonte
O patch que muda esse comportamento no Debian. salsa.debian.org/python-team/modules/python-virtualenv/blob/… Gostaria de entender o processo de pensamento usado quando este patch foi adicionado.
Winny

Respostas:

24

venvé um script de conveniência para criar envs virtuais, mas não substitui completamente tudo o que virtualenvpode fazer. Usar qualquer um é bom para a maioria dos casos. virtualenvnão é obsoleto.

python3 -m venvfunciona após a instalação python3-venvporque o Debian retira alguns scripts do pacote base do Python. python3-virtualenvnão coloca o virtualenvscript no seu caminho por algum motivo, mas o python-virtualenvfaz e funcionará bem para qualquer versão.

Não é importante para qual versão virtualenvestá instalada, pode produzir envs para qualquer versão instalada passando -p pythonX(onde X é a versão). venv, sendo mais simples, criará apenas envs da versão da qual ela é executada e está disponível apenas desde o 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
davidism
fonte