pyvenv vs venv vs python-virtualenv vs virtualenv y 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

¿Que esta pasando aqui? es python-virtualenv == pyvenv? ¿Todavía no está roto? ¿El virtualenv original todavía funciona con python? si venv (demasiadas variaciones de nombre !!!) es parte de la biblioteca estándar, https://docs.python.org/3/library/venv.html , ¿por qué me dicen que lo instale?

Y cuando intenté instalarlo, obtuve:

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

En ese momento aborté, porque instalar Python3-pip justo antes de eso me había dado

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

Y no estaba seguro de si los paquetes adicionales los sobrescribirían o irían a Python 2.7.

Leí que se supone que python 3 es el valor predeterminado en el futuro. Dado que tanto 2.7 como 3.4 están allí y tienen comandos separados, ¿cómo no solo me aseguro de que Python 3 sea mi predeterminado, sino que todo lo que instalo vaya allí y lo use en lugar de 2.7?

Por cierto, probé sudo apt-get python3-virtualenv y obtuve: E: No se puede encontrar el paquete python3-virtualenv

Malik A. Rumi
fuente
1
Todavía me gustaría saber cuál es la diferencia, si la hay, entre todos estos paquetes de entornos virtuales diferentes pero con nombres similares.
Malik A. Rumi
Estoy usando 14.04, así que esta respuesta me ayudó.
FriendFX

Respuestas:

4

La forma de instalar paquetes Python 3.x en un entorno virtual de Python es crear el entorno virtual de Python utilizando el creador del entorno virtual de Python 3 ( python3-virtualenv ). python3-virtualenv está en los repositorios predeterminados de Ubuntu en Ubuntu 14.10 y posteriores.

Instalar paquetes Python 3.x en un entorno virtual Python en 16.04 y posterior

  1. Instalar el creador del entorno virtual Python 3

    sudo apt install virtualenv python3-virtualenv
  2. Cree un entorno virtual de Python para python3. Solo puede instalar paquetes python3 dentro de este entorno virtual de Python. Si también desea instalar los paquetes de Python 2.x, debe crear otro entorno virtual de Python.

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

    El nuevo entorno virtual de Python para python3 se creará en el envdirectorio que se encuentra en el directorio actual.

  3. Instalar paquetes de Python.

    cd / path / to / env / # env es el directorio del entorno virtual python3
    fuente bin / activar
    pip3 instalar nombre del paquete siguiente nombre del paquete siguiente apellido del paquete

Este es un nuevo entorno virtual de python3 con la última versión de pip3, por lo que instalar paquetes de Python funcionará de maravilla.


Instalar paquetes Python 3.x en un entorno virtual Python en Ubuntu 14.04

sudo apt-get install virtualenvwrapper  
gedit .bashrc

Agregue la siguiente línea al final de .bashrc.

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

Guarde los cambios en .bashrc y cierre gedit. Obtenga su .bashrc para que los cambios surtan efecto.

cd 
source .bashrc

Cree un entorno virtual de Python para python3. Solo puede instalar paquetes python3 dentro de este entorno virtual de Python. Si también desea instalar los paquetes de Python 2.x, debe crear otro entorno virtual de Python.

mkvirtualenv py3 -p /usr/bin/python3

El nuevo entorno virtual de Python para python3 se creará en el ~/.virtualenvs/py3directorio. .virtualenvsEs una carpeta oculta.

Instalar un paquete.

cd ~ / .virtualenvs / py3
fuente bin / activar
pip3 nombre-paquete de instalación
karel
fuente
44
Esto no parece ser correcto. Vivid (15.04) tiene python3-virtualenvy python3-venvpaquetes disponibles. Supongo que python3-venves el paquete correcto, en cuyo caso no tengo idea de qué propósito python3-virtualenvsirve.
Knite
Incorrecto. Puede usar virtualenv(ejecutable) para crear un entorno con un intérprete arbitrario, incluido PyPy, muy bien, por ejemplo virtualenv -p python3 newenv.
Saaj
0

Bueno, se pone complicado. Lo siguiente se muestra en Ubuntu Xenial (que es una versión subyacente para Linux Mint que uso). Vamos a resolverlo:

pyvenv

Se refiere a la secuencia de comandos de envoltura del paquete Python 3.3+ stdlib . Pero quedó en desuso desde Python 3.6.

También es un paquete PyPi , que es un conmutador de entorno virtual.

venv

Es el paquete Python 3.3+ stdlib cuyo propósito era mejorar y reemplazar el paquete PyPi virtualenv (ver PEP 405 ). Pero parece que todavía no está allí (al menos no tan completo).

python-virtualenv y virtualenv

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

Como puede ver, se ejecuta en Python 3. El python-virtualenvpaquete está destinado a ser utilizado como python2 -m virtualenv py2. Veamos cómo virtualenvfunciona en Ubuntu Xenial nuevo ( 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 puede ver a pesar de que el virtualenvpaquete está utilizando python3-virtualenv, su valor predeterminado es crear el entorno Python 2.

saaj
fuente
También he notado lo mismo en mi máquina que ejecutaba Ubuntu 14.04 en ese momento. - "Como puede ver a pesar de que el paquete virtualenv está usando python3-virtualenv, su valor predeterminado es crear el entorno Python 2".
karel