salir instalar descargar activar python python-3.x virtualenv virtualenv-commands

python - instalar - ¿Puedo mover un virtualenv?



virtualenv install (4)

Esta pregunta no es un duplicado.

Se trata no solo de cambiar el nombre de un entorno virtual, sino de moverlo realmente a un directorio diferente, incluido, potencialmente, un directorio de usuario diferente.

Esto no es lo mismo que simplemente renombrar un entorno virtual, especialmente para personas que no están familiarizadas con virtualenvs.

Si creo un virtualenv y lo muevo a una carpeta diferente, ¿seguirá funcionando?

$ virtualenv -p /usr/bin/python3 /home/me/Env/my-python-venv $ source Env/my-python-venv/bin/activate (my-python-venv) $

... más tarde ese día, el entorno virtual se MUDÓ ...

(my-python-venv) $ deactivate $ mkdir -p /home/me/PeskyPartyPEnvs $ mv /home/me/Env/my-python-venv /home/me/PeskyPartyPEnvs/

Pregunta:

esto funcionara?

$ source /home/me/PeskyPartyPEnvs/my-python-venv/bin/activate (my-python-venv) $ /home/me/PeskyPartyPEnvs/my-python-venv/bin/pip3 install foaas

Me refiero a esto como una pregunta menor sobre la sabiduría de intentar esto (a menos que esa sabiduría sea humorística, por supuesto), y más sobre si es posible. Realmente quiero saber si es posible hacerlo en Python 3, o si solo tengo que absorberlo y clonarlo.

¿Puedo hacer un virtualenv así sin tristeza? Quiero evitar la tristeza.


El argumento --relocatable a virtualenv parece permitirte hacer esto.


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 $

... las prensas enter mucho en frustración, y lo siguiente funciona

$ $ $ pip3 search foaas

Excepto que no es de my-python-venv , ergo tristeza.

¿Quiere hacer un mv su virtualenv y usarlo, de lo contrario no modificado?

Respuesta corta:

Bueno, ya no puedes .


Sí, esto debería ser posible si no ha hecho nada que dependa del directorio actual de virtualenv.

Sin embargo, si tiene la opción, lo mejor que puede hacer es crear un nuevo virtualenv y comenzar a usar el nuevo virtualenv. Esta es la opción más segura y menos probable que cause problemas más adelante.

La documentación menciona que :

Cada virtualenv tiene información de ruta codificada,

Por ejemplo, si ha ejecutado setvirtualenvproject entonces no podrá cambiar al directorio correcto después de ejecutar workon ... así que en ese caso necesitaría arreglarlo manualmente.

En general, un virtualenv es poco más que un directorio con los archivos necesarios de intérprete de Python más los paquetes que necesita.


Sí. Es posible moverlo en la misma plataforma. Puede usar --relocatable en un entorno existente.

De --help :

--relocatable - Haga que un entorno virtualenv EXISTENTE sea reubicable. Esto corrige los scripts y hace que todos los archivos .pth sean relativos.

SIN EMBARGO, esto NO parece cambiar la secuencia de comandos de activate , sino que solo cambia las easy_install* comandos pip* y easy_install* . En el script de activate , la variable de entorno $VIRTUAL_ENV codificada como original /path/to/original/venv . La variable $VIRTUAL_ENV se usa para establecer la PATH de su entorno activo, por lo que debe cambiarse en función de la nueva ubicación para llamar a python y pip etc. sin ruta absoluta.

Para solucionar este problema, puede cambiar la variable de entorno $VIRTUAL_ENV en el script de activate (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 puedes instalar cosas y cargarlas en tu entorno virtual recién ubicado.