Entorno virtual de Python

Entorno virtual de Python

Cuando escribimos programas de Python, a menudo usamos paquetes y módulos de biblioteca no estándar, como solicitudes y otros paquetes y módulos útiles de terceros. A veces, también se usa una versión específica de un paquete y módulo. Puede ser que esta versión particular corrija un error o que la interfaz dependiente solo esté disponible en esa versión. También es posible que Python 3.6 esté instalado en el sistema, pero la aplicación requiere 3.7 o Python 2.7.

Estas situaciones están destinadas a las necesidades de múltiples Pythons y sus bibliotecas. Si el programa que escribimos depende de la versión 1.0 de una biblioteca, y el sistema está instalado en la versión 1.2, la aplicación no se ejecutará, si la aplicación requiere Python 2.7, puede guardarse en Python 3.
El problema para resolver estas diferentes necesidades es usar un entorno virtual , que es un árbol de directorios que instala una versión de Python específica y la versión de las bibliotecas requeridas. De esta manera, diferentes aplicaciones pueden usar diferentes entornos virtuales para cumplir con sus condiciones operativas. La versión de la biblioteca dentro de diferentes entornos virtuales no afecta a otros entornos virtuales.

Creación y uso del entorno virtual Python.

En la era de Python 2, la gestión del entorno virtual utiliza virtualenv y su paquete virtuaalenvwrapper (instalado a través de pip install ). También admiten el uso en Python 3. virtuaalenvwrapper fue desarrollado usando un shell y por lo tanto no es compatible con Windows. El soporte para Windows se llama virtuaalenvwrapper-win .
A partir de Python 3.3, venv introdujo una nueva biblioteca venv para administrar el entorno virtual. Consulte la descripción de PEP-405 para obtener más detalles. Muchas de sus operaciones son similares a virtualenv . pyvenv es la herramienta recomendada para crear entornos virtuales en Python 3.3 y 3.4, pero ha quedado en desuso en Python 3.6, y las versiones posteriores usan venv .
La creación de un entorno virtual con venv es todavía muy fácil. Ejecute el módulo de venv como un script y determine la ruta al entorno virtual:
python3 -m venv /path/to/myenv
Este comando creará el directorio /path/to/myenv y creará un directorio que contiene el intérprete de Python, las bibliotecas estándar y varios archivos de soporte:
myenv
├── bin
│   ├── activate
│   ├── activate.csh
│   ├── activate.fish
│   ├── easy_install
│   ├── easy_install-3.6
│   ├── pip
│   ├── pip3
│   ├── pip3.6
│   ├── python -> python3.6
│   ├── python3 -> python3.6
│   └── python3.6 -> /usr/bin/python3.6
├── include
├── lib
│   └── python3.6
│       └── site-packages
├── lib64 -> lib
└── pyvenv.cfg
Una vez que haya creado su entorno virtual, puede activarlo y usarlo. En Linux y macOS, ejecute:
source /path/to/myenv/bin/activate
(Este script está escrito para el bash shell . Si está utilizando csh o un shell fish , use el script activate.csh o activate.fis para activarlo).
Después de activar el entorno virtual, su indicador de shell mostrará el nombre del entorno virtual que está utilizando, y puede usar Python y las bibliotecas relacionadas en ese entorno virtual:
$ source myenv/bin/activate
(myenv) veelion@gtx:~/p2/tutorial/md_Python/codes$ which python
/home/veelion/p2/tutorial/md_Python/codes/myenv/bin/python
(myenv) veelion@gtx:~/p2/tutorial/md_Python/codes$ python
Python 3.6.8 (default, Dec 24 2018, 19:24:27) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/veelion/p2/tutorial/md_Python/codes/myenv/lib/python3.6/site-packages']
>>> 
Si ejecuta el comando venv con la opción -h , puede ver el uso detallado:
$ python3 -m venv -h
usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear]
            [--upgrade] [--without-pip]
            ENV_DIR [ENV_DIR ...]

Creates virtual Python environments in one or more target directories.

positional arguments:
  ENV_DIR               A directory to create the environment in.

optional arguments:
  -h, --help            show this help message and exit
  --system-site-packages
                        Give the virtual environment access to the system
                        site-packages dir.
  --symlinks            Try to use symlinks rather than copies, when symlinks
                        are not the default for the platform.
  --copies              Try to use copies rather than symlinks, even when
                        symlinks are the default for the platform.
  --clear               Delete the contents of the environment directory if it
                        already exists, before environment creation.
  --upgrade             Upgrade the environment directory to use this version
                        of Python, assuming Python has been upgraded in-place.
  --without-pip         Skips installing or upgrading pip in the virtual
                        environment (pip is bootstrapped by default)

Once an environment has been created, you may wish to activate it, e.g. by
sourcing an activate script in its bin directory.

Python2 en Ubuntu 16.04 usa virtualenvwrapper para crear un entorno virtual para Python 3

El sistema Ubuntu 16.04 predeterminado de Python aún es 2, la mejor manera de usar Python 3.6 o Python 3.7 en este sistema es crear su entorno virtual. Puede que todavía haya mucha gente usando esta versión de Ubuntu, así que vale la pena hablar sobre esta sección. Aquí, abogamos por el uso de virtualenvwrapper y nos negamos a usar Anacodna.

(1) Instale Python 3.6, 3.7 y 3.8 en Ubuntu 16.04

Se puede instalar a través de fuente ppa o compilado desde la fuente. Para mayor comodidad (instalación y futuras actualizaciones), elegimos ppa:
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.6 python3.6-dev
Si instala 3.7 o 3.8, reemplace 3.6 en el comando anterior.
Si la conexión al PPA es lenta, puede usar el proxy inverso de USTC, https://lug.ustc.edu.cn/wiki/mirrors/help/revproxy 
En una oración, reemplácelo con un PPA acelerado por la USTA:
sudo find /etc/apt/sources.list.d/ -type f -name "*.list" -exec sed  
-i.bak -r  's#deb(-src)?\s*http(s)?://ppa.launchpad.net#deb\1 
http\2://launchpad.proxy.ustclug.org#ig' {} \;

(2) instalación y configuración virtualenvwrapper

Primero, instale virtualenvwrapper :
sudo pip install virtualenvwrapper
Esto instalará el virtualenvwrapper en la ruta de búsqueda de Python2 del sistema Ubuntu y también instalará la biblioteca virtualenv que depende.
A continuación, edite ~/.bashrc y escriba la configuración:
# virtualenvwrapper settings
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_SCRIPT=/usr/local/bin/virtualenvwrapper.sh
source /usr/local/bin/virtualenvwrapper_lazy.sh
El directorio raíz donde se configura el entorno virtual es $HOME/.virtualenvs . Para que la configuración anterior tenga efecto, ejecute el comando:
$ source ~/.bashrc
En este momento, hay un comando en la línea de comandos: mkvirutalenv .

(3) Crear un entorno virtual.

Ejecuta el comando:
mkvirtualenv py3.6 -p=/usr/bin/python3.6
Lo que significa es crear un entorno virtual llamado py3.6 cuyo intérprete es /usr/bin/python3.6 , lo que significa que creamos un entorno virtual Python 3.6 llamado py3.6.
Use el comando workon para activar el entorno virtual py3.6 :
$ workon py3.6
(py3.6) veelion@gtx:~$
Este es el comienzo del indicador de shell (py3.6) .
El comando para salir del entorno virtual y volver al entorno predeterminado del sistema es:
deactivate

Resumen del entorno virtual de Python

(1) ¿Para qué se utiliza el entorno virtual? 
(2) Python3 viene oficialmente con el uso de venv (3) Crea un entorno virtual Python 3.6 con virtualenvwrapper en Python 2.

Ejercicio

Cree su propio entorno virtual. Si está utilizando Python3, use el venv oficial para crear un entorno virtual.

留言