pyvenv vs venv vs python-virtualenv vs virtualenv e python 3

13
malikarumi@Tetouan2:~$ pip install virtualenv
    Collecting virtualenv
    Downloading virtualenv-12.0.7-py2.py3-none-any.whl (1.8MB)
    100% |################################| 1.8MB 330kB/s 

malikarumi@Tetouan2:~$ pip freeze
    (a lot of stuff, but not virtualenv)

malikarumi@Tetouan2:~$ virtualenv testvenv1
    The program 'virtualenv' is currently not installed. You can install it by typing:
    sudo apt-get install python-virtualenv

O que está acontecendo aqui? que é python-virtualenv == pyvenv? Ainda não está quebrado? O virtualenv original ainda funciona com python? se venv (muitas variações de nome !!!) faz parte da biblioteca padrão, https://docs.python.org/3/library/venv.html , por que estou sendo instruído a instalá-lo?

E quando tentei instalá-lo, obtive:

malikarumi@Tetouan2:~$ sudo apt-get install python-virtualenv
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following extra packages will be installed:
    python-colorama python-distlib python-html5lib python-pip python-setuptools

Nesse ponto, eu abortei, porque a instalação do python3-pip logo antes disso me deu

Setting up python3-setuptools (3.3-1ubuntu1) ...
Setting up python3-pip (1.5.4-1) ...

E eu não tinha certeza se os pacotes extras os substituiriam ou iriam para o python 2.7.

Eu li que o python 3 deveria ser o padrão daqui para frente. Como o 2.7 e o 3.4 estão lá e têm comandos separados, como não apenas certifico-me de que o Python 3 é o meu padrão, mas que qualquer coisa que eu instale vá para lá e seja usada por ele em vez do 2.7?

BTW, tentei o sudo apt-get python3-virtualenv e obtive: E: Não foi possível localizar o pacote python3-virtualenv

Malik A. Rumi
fonte
1
Eu ainda gostaria de saber qual é a diferença (se houver) entre todos esses pacotes de ambiente virtual diferentes, mas com nomes semelhantes.
Malik A. Rumi
Estou usando o 14.04, então essa resposta me ajudou.
FriendFX

Respostas:

4

A maneira de instalar pacotes Python 3.x em um ambiente virtual Python é criar o ambiente virtual Python usando o criador do ambiente virtual Python 3 ( python3-virtualenv ). python3-virtualenv está nos repositórios padrão do Ubuntu no Ubuntu 14.10 e posterior.

Instale os pacotes Python 3.x em um ambiente virtual Python no 16.04 e posterior

  1. Instale o criador do ambiente virtual Python 3

    sudo apt install virtualenv python3-virtualenv
  2. Crie um ambiente virtual Python para python3. Você só pode instalar pacotes python3 dentro deste ambiente virtual Python. Se você também quiser instalar pacotes Python 2.x, precisará criar outro ambiente virtual Python.

    virtualenv -p python3 env  
    source ./env/bin/activate

    O novo ambiente virtual Python para python3 será criado no envdiretório que está localizado no diretório atual.

  3. Instale pacotes Python.

    cd / path / to / env / # env é o diretório do ambiente virtual python3
    compartimento de origem / ativar
    pip3 instala primeiro nome do pacote próximo nome do pacote último nome do pacote

Este é um novo ambiente virtual python3 com a versão mais recente do pip3, portanto, a instalação de pacotes Python nele funcionará muito bem.


Instale os pacotes Python 3.x em um ambiente virtual Python no Ubuntu 14.04

sudo apt-get install virtualenvwrapper  
gedit .bashrc

Adicione a seguinte linha ao final de .bashrc.

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

Salve as alterações em .bashrc e feche o gedit. Crie seu .bashrc para que as alterações entrem em vigor.

cd 
source .bashrc

Crie um ambiente virtual Python para python3. Você só pode instalar pacotes python3 dentro deste ambiente virtual Python. Se você também quiser instalar pacotes Python 2.x, precisará criar outro ambiente virtual Python.

mkvirtualenv py3 -p /usr/bin/python3

O novo ambiente virtual Python para python3 será criado no ~/.virtualenvs/py3diretório .virtualenvsé uma pasta oculta.

Instale um pacote.

cd ~ / .virtualenvs / py3
compartimento de origem / ativar
nome do pacote de instalação do pip3
karel
fonte
4
Isso não parece estar correto. O Vivid (15.04) tem python3-virtualenve python3-venvpacotes disponíveis. Estou assumindo que python3-venvé o pacote correto, caso em que não tenho idéia de que finalidade python3-virtualenvserve.
Knite
Incorreta. Você pode usar virtualenv(executável) para criar um ambiente com intérprete arbitrário, incluindo PyPy, por exemplo virtualenv -p python3 newenv.
saaj 18/02
0

Bem, fica complicado. O seguinte é mostrado no Ubuntu Xenial (que é a versão subjacente do Linux Mint que eu uso). Vamos resolver isso:

pyvenv

Refere-se ao script de wrapper do pacote stdlib do Python 3.3+ . Mas foi preterido desde o Python 3.6.

Também é um pacote PyPi , que é um alternador de ambiente virtual.

venv

É o pacote stdlib do Python 3.3+ cujo objetivo era melhorar e substituir o pacote virtualenv do PyPi (consulte o PEP 405 ). Mas parece que ainda não está lá (pelo menos não como um recurso completo).

python-virtualenv e virtualenv

$ apt-cache show virtualenv | grep Depends
Depends: python3, python3-virtualenv

Como você pode ver, ele roda no Python 3. O python-virtualenvpacote deve ser usado como python2 -m virtualenv py2. Vamos ver como virtualenvfunciona o Ubuntu Xenial ( docker run --rm -it ubuntu:xenial):

$ virtualenv
bash: virtualenv: command not found
$ apt-get update
...
$ apt-get install --yes --no-install-recommends virtualenv
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  ca-certificates dh-python libexpat1 libmpdec2 libpython3-stdlib
  libpython3.5-minimal libpython3.5-stdlib libsqlite3-0 libssl1.0.0
  mime-support openssl python-pip-whl python3 python3-minimal
  python3-pkg-resources python3-virtualenv python3.5 python3.5-minimal
Suggested packages:
  libdpkg-perl python3-doc python3-tk python3-venv python3-setuptools
  python3.5-venv python3.5-doc binutils binfmt-support
Recommended packages:
  file
The following NEW packages will be installed:
  ca-certificates dh-python libexpat1 libmpdec2 libpython3-stdlib
  libpython3.5-minimal libpython3.5-stdlib libsqlite3-0 libssl1.0.0
  mime-support openssl python-pip-whl python3 python3-minimal
  python3-pkg-resources python3-virtualenv python3.5 python3.5-minimal
  virtualenv
...
$ virtualenv test
The executable python2 (from --python=python2) does not exist
$ virtualenv -p python3 py3 
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /py3/bin/python3
Also creating executable in /py3/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
$ . py3/bin/activate
(py3) $ python --version
Python 3.5.2
(py3) $ deactivate
$ apt-get install --yes --no-install-recommends python    
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libffi6 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib
  python-minimal python2.7 python2.7-minimal
Suggested packages:
  python-doc python-tk python2.7-doc binutils binfmt-support
The following NEW packages will be installed:
  libffi6 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python
  python-minimal python2.7 python2.7-minimal
...
$ virtualenv py2 
Running virtualenv with interpreter /usr/bin/python2
New python executable in /py2/bin/python2
Also creating executable in /py2/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
$ . py2/bin/activate
(py2) $ python --version
Python 2.7.12

Como você pode ver, mesmo que o virtualenvpacote esteja usando python3-virtualenv, seu padrão é criar o ambiente Python 2.

saaj
fonte
Também notei a mesma coisa na minha máquina que estava executando o Ubuntu 14.04 na época. - "Como você pode ver, mesmo que o pacote virtualenv esteja usando python3-virtualenv, seu padrão é criar o ambiente Python 2."
Karel