Ya no tienes que investigar más por todo internet porque estás al lugar perfecto, contamos con la respuesta que quieres encontrar y sin liarte.
Solución:
Si. Es posible moverlo en la misma plataforma. Puedes usar --relocatable
en un entorno existente.
De --help
:
–relocatable – Hacer que un entorno virtual EXISTENTE sea reubicable. Esto corrige los scripts y hace que todos los archivos .pth sean relativos.
SIN EMBARGO, esto NO parece cambiar el activate
script, y más bien solo cambia el pip*
y easy_install*
guiones. En el activate
guión, el $VIRTUAL_ENV
variable de entorno codificada como la original /path/to/original/venv
. los $VIRTUAL_ENV
La variable se utiliza para establecer el PATH
de su entorno activo también, por lo que debe cambiarse en función de la nueva ubicación para llamar python
y pip
etc. sin camino absoluto.
Para solucionar este problema, puede cambiar el $VIRTUAL_ENV
variable de entorno en el activate
script (por ejemplo, usando sed
), y todo debería estar listo.
Un ejemplo de uso:
$ cd ~/first
$ virtualenv my-venv
$ grep 'VIRTUAL_ENV=' my-venv/bin/activate
VIRTUAL_ENV="/home/username/first/my-venv"
$ virtualenv --relocatable my-venv
Making script my-venv/bin/easy_install relative
Making script my-venv/bin/easy_install-2.7 relative
Making script my-venv/bin/pip relative
Making script my-venv/bin/pip2 relative
Making script my-venv/bin/pip2.7 relative
### Note that `activate` has not been touched
$ mkdir ~/second
$ mv my-venv ~/second
$ cd ~/second
$ grep 'VIRTUAL_ENV=' my-venv/bin/activate
VIRTUAL_ENV=/home/username/first/my-venv
### (This variable hasn't been changed, it still refers to the old, now non-existent directory!)
$ sed -i -e 's|username/first|username/second|' my-venv/bin/activate
## sed can be used to change the path.
## Note that the `-i` (in place) flag won't work on all machines.
$ source my-venv/bin/activate
(my-venv) $ pip install foass
...
(my-venv) $ python
[...]
> import foass
Hurra, ahora puede instalar cosas y cargarlas en su entorno virtual recién ubicado.
Para Python 3.3+ (con nuevo venv
módulo incorporado)
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, virtualenv
se ha convertido en un módulo incorporado llamado venv
.
los --relocatable
La opción mencionada en otras respuestas no se ha incluido en venv
, y actualmente no existe una forma buena y segura que yo sepa 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, sí 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 funcionan con venv
así como.
Nota: En esa respuesta, se centra en virtualenv
, en vez de venv
. Vea a continuación cómo traducir.
venv
vs. mayores virtualenv
sintaxis de comandos
El comando a usar 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
opy -3.7
o similar (el Lanzador de Python 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 filespython37python.exe
Si no está seguro de qué versión se está ejecutando, siempre puede python --version
descubrir.
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 con ellos por un tiempo. 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.
-
Usar
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.
-
Usar
python -m pip freeze > requirements.txt
para crear la lista de dependencias de paquetes actuales y ponerlas en elrequirements.txt
expediente. 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 estar 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 solo use
python
como el comando - O usa una ruta absoluta con
python.exe
en la carpeta del entorno virtual
- Ejecute Python directamente desde el entorno virtual actual (con él activado) y solo use
- 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.
- Usar
python -m venv my_new_venv
para crear un nuevo entorno virtual en el directorio de trabajo actual en un nuevomy_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
expediente.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
- los
-v
o la opción “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, de 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.
PERO AY:
No, no puedes simplemente mv
. Existen soluciones alternativas, pero podría ser más fácil de reinstalar.
(my-python-venv)$ /home/me/PeskyPartyPEnvs/pip3 install foaas
zsh: /home/me/PeskyPartyPEnvs/pip3: bad interpreter: /home/me/Env/my-python-venv/bin/python3: no such file or directory
(my-python-venv)$ deactivate
$
… prensas enter
mucha frustración, y lo siguiente funciona
$
$
$ pip3 search foaas
Excepto que no es de my-python-venv
, ergo tristeza.
Querer mv
tu virtualenv
y usarlo, de otra manera sin modificar?
Respuesta corta:
Bueno ya hipocresía.