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

10
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? é python-virtualenv == pyvenv? Isso ainda não está quebrado? O virtualenv original ainda funciona com python? se venv (variações de nome demais !!!) faz parte da biblioteca padrão, link , por que Estou sendo dito para instalá-lo?

E quando tentei instalá-lo, recebi:

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 instalar o python3-pip pouco 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 iriam sobrescrevê-los ou ir para o python 2.7.

Eu li que o python 3 deve ser o padrão daqui para frente. Já que tanto o 2.7 quanto o 3.4 estão lá, e tem comandos separados, como eu não apenas me certifico de que o Python 3 seja meu padrão, mas que qualquer coisa que eu instalar vá até lá e seja usado por ele em vez de 2.7?

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

    
por Malik A. Rumi 01.04.2015 / 13:07

2 respostas

3

Não existe um pacote python3-virtualenv nos repositórios do Ubuntu. Existe um pacote python-virtualenv nos repositórios do Ubuntu, mas esse pacote não funcionará para instalar pacotes do Python 3.x em um ambiente virtual do Python. O python-virtualenv só funciona para instalar pacotes do Python 2.x em um ambiente virtual do Python.

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 ). O python3-virtualenv está nos repositórios padrão do Ubuntu no Ubuntu 14.10 e posterior.

Instale 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. Fonte 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 quer instalar pacotes do Python 2.x, então você precisa criar outro ambiente virtual em Python.

mkvirtualenv py3 -p /usr/bin/python3

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

Instale um pacote.

cd ~/.virtualenvs/py3
source bin/activate
pip3 install package-name

Instalar pacotes do Python 3.x em um ambiente virtual do Python em 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 quer instalar pacotes do Python 2.x, então você precisa criar outro ambiente virtual em Python.

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

    O novo ambiente virtual Python para python3 será criado no diretório env , localizado no diretório atual.

  3. Instale pacotes do Python.

    cd /path/to/env/ # env is the python3 virtual environment's directory
    source bin/activate
    pip3 install first-package-name next-package-name last-package-name

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

    
por karel 01.04.2015 / 13:13
0

Bem, fica complicado. O seguinte é mostrado contra o Ubuntu Xenial (que é o lançamento subjacente para Linux Mint eu uso). Vamos resolver isso:

pyvenv

Ele se refere ao script de wrapper do Python 3.3+ stdlib package . Mas ficou obsoleto 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 PyPi pacote virtualenv (consulte 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 é executado em Python. 3. python-virtualenv package deve ser usado como python2 -m virtualenv py2 . Vamos ver como o virtualenv funciona no novo 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 virtualenv package esteja usando python3-virtualenv , seu padrão é criar o ambiente do Python 2.

    
por saaj 18.02.2017 / 15:04