Emiliano, parte de este equipo de trabajo, nos ha hecho el favor de escribir este tutorial porque conoce a la perfección este tema.
Solución:
La ejecución con el sistema Python y las bibliotecas lo limita a una versión específica de Python, elegida por su proveedor de sistema operativo. Si intenta ejecutar todas las aplicaciones de Python en una instalación de Python, es probable que se produzcan conflictos de versiones entre la colección de bibliotecas. También es posible que los cambios en el sistema Python rompan otras características del sistema operativo que dependen de él.
Los entornos virtuales, o “virtualenvs” son instalaciones de Python ligeras y autónomas, diseñadas para ser configuradas con un mínimo de esfuerzo y para “simplemente funcionar” sin requerir una configuración extensa o conocimientos especializados.
virtualenv
evita la necesidad de instalar paquetes de Python a nivel mundial. Cuando un virtualenv está activo, pip
instalará paquetes dentro del entorno, lo que no afecta la instalación base de Python de ninguna manera.
En Python 3.3 o posterior, puede crear un virtualenv de la siguiente manera:
$ python3 -m venv ENV_DIR
Para Windows, debe reemplazar python3
con la ruta completa a python.exe:
>C:Python34python.exe -m venv ENV_DIR
(Esta es una instalación típica de Python; su sistema puede variar).
En versiones anteriores de Python, incluido Python 2, uno de los siguientes comandos debería funcionar en la mayoría de los casos:
$ virtualenv ENV_DIR
$ venv ENV_DIR
$ pyvenv ENV_DIR
$ pyvenv3 ENV_DIR
ENV_DIR
debería ser un directorio inexistente. El directorio puede tener cualquier nombre, pero para mantener estas instrucciones simples, asumiré que ha creado su virtualenv en un directorio llamado venv
(por ejemplo, con python3 -m venv ./venv
).
Para trabajar en su virtualenv, lo activa:
$ . ./venv/bin/activate
(venv)$
O use esto si tiene un sistema de Windows:
$ venvScriptsactivate
los (venv)
en el indicador de shell le permite saber qué virtualenv ha activado, pero puede desactivar esta función si no le gusta. Puede ejecutar todos los comandos habituales de Python, y serán locales para su virtualenv:
(venv)$ pip install requests numpy
[...]
(venv)$ python
[...]
>>> import requests
>>> import numpy as np
>>>
python
ejecutará la versión de Python que instaló en su virtualenv, por lo que (por ejemplo) no tiene que escribir python3
para obtener Python 3. El Python que ejecuta tendrá acceso a todos los módulos de la biblioteca estándar y todos los paquetes que instaló en virtualenv, pero (por defecto) ninguno de los paquetes instalados en todo el sistema site-packages
directorio.
Esta última regla es importante: al restringir su virtualenv para que solo use paquetes instalados localmente, puede asegurarse de controlar exactamente qué dependencias está usando su proyecto, incluso si se instala o actualiza algún paquete nuevo para todo el sistema la semana que viene. Si lo desea, puede obtener una lista de sus paquetes instalados:
(venv)$ pip freeze
requests==2.13.0
numpy==1.12.0
(venv)$
pip
también puede analizar este formato e instalarlo desde él, e instalará las mismas versiones, incluso si se han lanzado actualizaciones mientras tanto:
(venv)$ pip freeze >requirements.txt
(some-other-venv)$ pip install -r requirements.txt
[...]
(some-other-venv)$ python
>>> import requests
>>> import numpy as np
>>>
Puede salir del virtualenv desactivándolo:
(venv)$ deactivate
$ python
[...]
>>> import requests
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named 'requests'
Puede crear tantos virtualenvs como desee y no interferirán entre sí ni con los paquetes de su sistema. Un virtualenv es “solo” un directorio con un montón de binarios y scripts debajo, por lo que puede eliminar un virtualenv de la misma manera que elimina cualquier directorio (rm -r venv
en Unix). Si el virtualenv está activado cuando lo elimina, puede confundir su shell, por lo que probablemente sea una buena idea deactivate
primero en ese caso.
Algunas veces no se le otorgan privilegios de root y es posible que no pueda usar sudo. Muchas otras veces, no es recomendable usar sudo para instalar paquetes, ya que podría sobrescribir algún paquete que podría estar siendo usado por otras aplicaciones.
Virtualenv puede ayudarlo a crear un entorno separado en el que no necesita privilegios de root y también puede personalizar el entorno de acuerdo con sus necesidades. Consiste en una instalación autónoma de Python que solo interactúa con su entorno creado específico.
Básicamente, le da un poco de libertad y evita dañar (o modificar) el entorno raíz que podría albergar muchas funcionalidades antiguas de aplicaciones antiguas.
La instalación también es bastante fácil.
Instalación de paquetes con sudo pip
instalará paquetes a nivel mundial, lo que puede dañar algunas herramientas del sistema.
Instalar globalmente significa que instalará sus paquetes en un lugar como /usr/lib/python2.7/site-package
por lo que si algunos paquetes necesitan una versión anterior de sus paquetes de Python, esta acción puede romperla.
virtualenv
Te permite evitar instalar paquetes de Python a nivel mundial creando un entorno de Python aislado. Eso significa que instalará paquetes solo en la carpeta de proyecto que desee.
En mac y linux
-
Instalar en pc
python3 -m pip install --user virtualenv
-
Creación de un entorno virtual: vaya a la carpeta del proyecto que desee
python3 -m virtualenv env
-
Activando un virtualenv: en la carpeta de su proyecto deseada
source env/bin/activate
Después de activarlo, puede instalar sus paquetes usando pip.
Para obtener más información sobre cómo usarlo en Windows: Cómo usar virtualenv en Windows
Comentarios y puntuaciones
Si entiendes que te ha sido provechoso nuestro artículo, sería de mucha ayuda si lo compartieras con otros seniors de este modo nos ayudas a difundir nuestra información.