Blog
¿Por qué necesito Entornos Virtuales?
Las aplicaciones de Python a menudo usan paquetes y módulos que no vienen como parte de la biblioteca estándar. En la mayoría de ocasiones, las aplicaciones necesitarán una versión específica de una librería, ya que la aplicación puede requerir que se corrija un error en particular o que la aplicación se escriba usando una versión obsoleta de la interfaz de la biblioteca.
Esto significa que puede que no sea posible que una instalación de Python cumpla con los requisitos de cada aplicación. Si la aplicación A necesita la versión 1.0 de un módulo en particular, pero la aplicación B necesita la versión 2.0, entonces los requisitos están en conflicto y la instalación de la versión 1.0 o 2.0 dejará una aplicación incapaz de ejecutarse.
La solución para este problema es crear un entorno virtual, un árbol de directorios autocontenido que contenga una instalación de Python para una versión particular.
Diferentes aplicaciones pueden utilizar diferentes entornos virtuales. Para resolver el ejemplo anterior de requisitos en conflicto, la aplicación A puede tener su propio entorno virtual con la versión 1.0 instalada, mientras que la aplicación B tiene otro entorno virtual con la versión 2.0. Si la aplicación B requiere que una biblioteca se actualice a la versión 3.0, esto no afectará el entorno de la aplicación A.
Usando Entornos Virtuales
Si no estas utilizando Python 3 podemos instalar Entornos Virtuales con la herramienta pip:
pip install virtualenv
Si está utilizando Python 3, entonces ya debería tener instalado el módulo venv de la biblioteca estándar.
Comenzamos por hacer un nuevo directorio para trabajar:
mkdir python-virtual-environments && cd python-virtual-environments
Para crear el nuevo entorno virtual
Para python 2:
virtualenv env
Para python 3:
python3 -m venv env
El enfoque de Python 3 venv tiene la ventaja de obligarlo a elegir una versión específica del intérprete de Python 3 que se debe utilizar para crear el entorno virtual. Esto evita cualquier confusión en cuanto a en qué instalación de Python se basa el nuevo entorno.
De Python 3.3 a 3.4, la forma recomendada de crear un entorno virtual era usar la herramienta de línea de comandos pyvenv que también viene incluida con su instalación de Python 3 de forma predeterminada. Pero en 3.6 y superiores, python3 -m venv es el camino a seguir.
Con esta tenemos nuestro ambiente virtual creado con la siguiente esctructura:
env/ bin/ include/ lib/ site-packages/
En el directorio bin/
se encuentran los ejecutables necesarios para interactuar con el entorno virtual. En el directorio include/
se encuentran algunos archivos de cabecera de C (cuya extensión es *.h
) necesarios para compilar algunas librerías de Python.
Finalmente, en el directorio lib/
se encuentra una copia de la instalación de Python así como un directorio llamado site-packages/
en donde se almacenan los paquetes Python instalados en el entorno virtual.
Ahora lo vamos a activar nuestro entorno virtual donde en un futuro instalaremos todos los módulos y librerías que necesitemos para nuestro proyecto. Lo activamos desde el directorio bin
source bin/activate
Y ahora nos aparece entre paréntesis nuestro entono virtual de la forma:
(env) nuestra ruta:
Ahora ya estamos listo para instalar aquí todos los requerimientos que necesitmeos para nuestro proyecto.
Cuando necesitemos salir tan solo debemos escribir lo siguiente y saldremos de nuestro entorno
deactivate
Creando ambientes virtuales en Anaconda
Para crear nuestro ambientes virtuales ejecutamos en nuestro cmd:
conda create --name myenv
Sustituimos myenv por el nombre que queramos darle y cuando pregunte “proceed ([y]/n)?” marcar la “y” (yes) con eso ya tendremos creado nuestro ambiente virtual. Para verificarlo podemos hacerlo desde 2 formas.
- Nos vamos a la siguinte ruta
C:\Users\*tu usuario*\.conda
Abrimos el archivo “environments.txt” y vemos los ambiertes virtuales que tenemos.
- Ejecutamos Anaconda Navigator
conda create -n myenv python=3.4
Para activar el entorno virtual e intalar librerias:
conda activate nombrequelehasdado
Para desactivarlo:
conda deactivate
Ejecutar spyder desde tu entorno
Si quieres ejecutar spyder desde tu entorno virtual tan solo escribe spyder (asegurate de estar dentro de tu entorno virtual).
Para chequear en que entorno virtual estas dentro de un editor ejecuta:
import sys print(sys.prefix)
Desde ese print saldrá la ruta del entorno virtual con la que podrás ver en cual de tus entornos virtuales estas.
[…] quieres más info sobre entornos virtuales puedes ir a este post donde se explica con mas […]
Un saludos para Todos,
me estoy iniciando con python, y estoy hecho un lío con la instalación de los paquetes.
Les explico:
1.- Tengo un software que necesito probar, que descargué de GitHub. Este software está escrito en python, lenguaje con el cual no he trabajado, pero ahora me va a tocar aprenderlo.
2.- Descargué e instalé anaconda en windows. Desde anaconda instalé spyder para desde allí probar los programas que descargué.
3.- En esos programas se importan muchas librerías, como por ejemplo matplotlib.
4.- Cuando trato de ejecutar alguno de los programas , no correr porque faltan esas librerías.
5.- En anaconda creé un ambiente virtual, allí entre los paquetes no instalados está Matplolib. Por lo tanto, lo marco y lo trato de instalar, al principio dice que se van a instalar como 10 paquetes, pero finalmente aparece un mensaje de que existen múltiples errores (Multiple Errors Encountered). Es decir no se instala.
6.- Entonces, me fui a la terminal. Cambié a mi ambiente virtual. Al listar los paquetes instalados con conda list, efectivamente, no sale matploitlib.
7.- Lo instalé con pip install matplotlib. Y vuelvo a listar los paquetes instalados con conda list. Ahora si aparece.
8.- Me voy a anaconda navigator de nuevo. Entro a mi ambiente virtual, y sorpresa no aparece matplotlib entre los paquetes instalados. De nuevo, lo selecciono y lo trato de instalar desde anaconda navigator, y aparece el mensaje de que se encontraron múltiples errores.
9.- En conclusión, no puedo instalar las librerías que necesito.
10.- Estoy hecho un lío con: anaconda, conda, pip, etc. No entiendo qué hace pip, qué conda y anaconda, porque se supone que si instalo anaconda no tendría problemas en la instalación de las librerías y demás paquetes para trabajar con python.
Veo que no hay nadie por acá, pero si alguien aparece, mucho agradecería si me pudieran mostrar los pasos para instalar las librerías.
Luciano
Hola Luciano, bueno tienes que ir paso a paso … y poco a poco iras entendiendo todos estos conceptos. Si tu problema es con la libreria de matplotlib decirte que dicha libreria viene ya instalada en anaconda asi que cuando ejecutes tu spyder ya la tienes. Un saludo y suerte!
Agradecerle, Rafael, en primer lugar, este artículo. Mi problema esta relacionado con la ejecución e, jupyterlab, de un notebook que pueda requerir paquetes de dos entornos virtuales diferentes. Me explico.
He instalado anaconda3, y diversos paquetes complementarios, como por ejemplo data_reader, en un entorno virtual denominado “base” Ahora necesito instalar plotly, para lo cual se recomienda crear un entorno virtual específico. Mi pregunta es, ¿tengo que volver a instalar jupyterlab y otros paquetes existentes en el entorno base, que son necesarios para ejecutar este notebook? ¿Cómo debo crear el entorno para plotly, de modo que siga pudiendo utilizar los recursos del entorno “base”?. Saludos cordiales
Hola, tengo un problema para instalar un paquete en el entorno anaconda3, yo instalé anaconda en linux porque necesito el programa MDtraj. Al descargar el paquete MDtraj-1.9.2.tar.bz2 ejecuté el comando: conda install MDtraj-1.9.2.tar.bz2 y parace ser que se instaló correctamente pero al listar los paquetes instalados de conda, el MDtraj aparece como unknown y no me permite ejecutar ningun comando propio de este. Alguien me podría dar alguna sugerencia para la instalación correctamente
Hola Adrian, prueba con este comando -> pip install mdtraj