Para Python 3.3+ (con un nuevo venv
módulo integrado)
Respuesta corta (independientemente de la versión):
- No existe una forma limpia y directa de mover un entorno virtual
- Recrea, es fácil !!
Respuesta larga:
A partir de Python v3.3, se virtualenv
ha convertido en un módulo incorporado llamado venv
.
La --relocatable
opción mencionada en otras respuestas no se ha incluido en venv
, y actualmente no existe una forma buena y segura que conozca de cambiar el nombre o reubicar un entorno virtual de Python.
Sin embargo, existe una forma bastante sencilla de simplemente recrear un entorno virtual, con todos sus paquetes instalados actualmente. Consulte esta respuesta o consulte la sección a continuación para obtener información sobre cómo recrear un entorno virtual. Durante el proceso, puede recrear el nuevo entorno en cualquier lugar y con el nombre que desee. O consulte la sección a continuación para conocer el proceso.
En esa respuesta, menciona algunos otros paquetes de terceros que pueden admitir cambios de nombre o movimientos directos. Si está decidido a buscar una forma de mover un entorno virtual intacto, podría investigar si esos también funcionan venv
.
Nota: En esa respuesta, se centra en virtualenv
, en lugar de venv
. Vea a continuación cómo traducir.
venv
vs virtualenv
sintaxis de comando anterior
El comando a utilizar venv
es:
python -m venv
en lugar de solo virtualenv
, que se instala como un comando en el paquete original. Donde "python" se refiere a cómo ejecuta su ejecutable de python, que podría ser una variedad de cosas, como:
python
py
o py -3.7
similar ( Python Launcher para Windows para Python 3.3+ y Windows solo por el momento)
python3
(convención para entornos linux que instalan de forma dual python 2 y 3)
- Si tiene problemas, use la ruta absoluta al ejecutable de Python que desea ejecutar: p.
c:\program files\python37\python.exe
Si no está seguro de qué versión se está ejecutando, siempre puede python --version
averiguarlo.
Cómo recrear un entorno virtual
Crear / recrear un entorno virtual es fácil y debería convertirse en algo natural después de trabajar un rato con ellos. Este proceso refleja lo que haría para distribuir su script como un paquete (con sus dependencias) en la primera mitad, y luego lo que haría alguien para instalar su script / paquete para un mayor desarrollo.
Primero, obtenga una lista actualizada de lo que hay en el entorno virtual. Con él activo, obtenga la versión de Python que usa y guarde la lista de dependencias en un archivo.
Úselo python --version
con el entorno virtual activado para ver qué versión de Python está usando.
- Esto es para mayor claridad: es posible que desee actualizar la versión de Python por varias razones, al menos a la última versión del parche
- Por ejemplo, si el venv existente está usando Python v3.7.4, pero ahora v3.7.6 está fuera, use v3.7.6 en su lugar, que debería incluir solo seguridad y correcciones de errores sin interrupciones.
Úselo python -m pip freeze > requirements.txt
para crear la lista de dependencias de paquetes actuales y colocarlas en el requirements.txt
archivo. Este comando funciona en Linux o Git Bash con seguridad, no estoy 100% seguro de Powershell o Command Line en Windows.
Ahora cree un nuevo entorno virtual y luego agregue las dependencias del anterior.
Haga su nuevo venv.
- Asegúrese de que está utilizando la versión correcta de python que desea instalar en venv.
- Si desea que sea exactamente la misma versión de Python:
- Ejecute Python directamente desde el entorno virtual actual (con él activado) y utilícelo
python
como comando
- O use una ruta absoluta
python.exe
en la carpeta del entorno virtual
- Para la nueva entrada de la carpeta venv en el comando:
- Agregue una ruta absoluta o relativa a la ubicación de la carpeta final deseada.
- Úselo
python -m venv my_new_venv
para crear un nuevo entorno virtual en el directorio de trabajo actual en una nueva my_new_venv
carpeta.
- El nombre de la carpeta venv será el nombre del venv (lo que aparece en el indicador cuando se activa).
Instale sus dependencias desde el requirements.txt
archivo.
python -m pip install -r requirements.txt
Es posible que deba reinstalar los paquetes locales que están en modo de desarrollo.
Tenga en cuenta que si alguna vez necesita ver la ubicación específica en la que está instalado un paquete, use:
python -m pip list -v
- La
-v
opción o "verbose" agregará información adicional sobre cada paquete que está instalado, incluida la ruta en la que está instalado. Esto es útil para asegurarse de que mantiene los paquetes instalados virtuales, del usuario y del sistema en orden.
En este punto, puede eliminar la antigua carpeta venv y todo el contenido. Recomiendo usar una GUI para eso: las eliminaciones de archivos a menudo son permanentes desde la línea de comandos de Linux, y un pequeño error tipográfico puede ser una mala noticia.