python - instalar - ¿Qué es un virtualenv y por qué debería usar uno?
instalar pydev en eclipse (3)
Algunas veces no se le otorgan privilegios de root y puede que no pueda usar sudo. Muchas otras veces, no es recomendable usar sudo para instalar paquetes, ya que podría sobrescribir algunos paquetes que podrían estar en uso por otras aplicaciones.
virtualenv puede ayudarlo a crear un entorno separado en el que no necesita privilegios de root, así como poder personalizar el entorno según sus necesidades. Consiste en una instalación de Python autónoma 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 puede albergar muchas funcionalidades antiguas de aplicaciones antiguas.
La instalación es bastante fácil también.
Estoy tratando de instalar un paquete de Python con este comando
pip install <name of package>
Estoy recibiendo errores de permiso y no estoy seguro de por qué. Podría ejecutarlo con sudo
, pero alguien me dijo que era una mala idea, y debería usar un virtualenv en su lugar.
¿Qué es un virtualenv? ¿Qué hace por mí?
La instalación de paquetes con pip
y sudo
instalará paquetes globalmente, lo que puede romper algunas herramientas del sistema.
Al instalarse globalmente, significa que instalará sus paquetes en su 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
permite evitar la instalación global de paquetes de Python al crear entornos aislados de Python. Eso significa que instalará paquetes solo en su carpeta de proyectos deseada.
En mac y linux
- Instalar
python3 -m pip install --usuario virtualenv
- Creando un Envio Virtual: Ve a tu carpeta de proyectos deseada
python3 -m virtualenv env
- Activando un virtualenv: En tu carpeta de proyectos deseada
fuente env / bin / activar
Después de activarlo podrás instalar tus paquetes usando pip.
Para obtener más información sobre su uso en Windows: Cómo usar virtaulen en Windows
Un virtualenv es una instalación Python liviana y autónoma. Están diseñados para configurarse con un mínimo de esfuerzo y para "simplemente trabajar" sin requerir una configuración extensa o conocimiento especializado.
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:/Python34/python.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
debe 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 tu virtualenv, lo activas:
$ . ./venv/bin/activate
(venv)$
O usa esto si tienes un sistema de Windows:
$ venv/Scripts/activate
El (venv)
en el indicador del shell le permite saber qué virtualenv ha activado, pero puede desactivar esta función si no le gusta. Puedes ejecutar todos los comandos de Python habituales, y serán locales para tu 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. instaló en el virtualenv, pero (de forma predeterminada) ninguno de los paquetes instalados en el directorio de site-packages
todo el sistema.
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 algún paquete nuevo para todo el sistema se instala o actualiza la próxima semana. 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, e instalará las mismas versiones, incluso si se han publicado 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
>>>
Puedes salir del virtualenv desactivándolo:
(venv)$ deactivate
$ python
[...]
>>> import requests
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
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 archivos 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 se activa cuando lo elimina, puede confundir su shell, por lo que probablemente sea una buena idea deactivate
primero en ese caso.