Saltar al contenido

cómo desactivar virtualenv desde un script bash

Solución:

Solo deactivate. Funcionará tanto en el script como en la línea de comandos, siempre que utilice bash.

Editar: también en la mayoría de los casos es una mejor idea deletrear la ruta completa de Python en sus scripts y servicios. No tiene estado, es más portátil y funciona prácticamente en todas partes. Entonces en lugar de hacer

. $VENV/bin/activate
/path/to/my/script.py --parameters

generalmente es preferible hacer

$VENV/bin/python /path/to/my/script --parameters

Créame, le ahorrará tiempo de depuración)

Será difícil hacer que un servicio como ese sea útil.

. ${VENV}/activate # note the dot

o

source ${VENV}/activate

Obtendrá el activate script, es decir, ejecutar su contenido como si fueran parte del shell o script donde los obtiene. virtualenvironment‘s activate está diseñado para este uso. Por el contrario, simplemente ejecutar el script normalmente con

${VENV}/activate # note: NO dot and NO 'source' command

ejecutará su contenido en una subcapa y no tendrá ningún efecto útil.

Sin embargo, su script de servicio ya se ejecutará en una subcapa propia. Entonces, a excepción de los comandos de Python que ejecute como parte del proceso de inicio del servicio, no tendrá ningún efecto.

En el lado positivo, ni siquiera tendrá que preocuparse por desactivar el entorno, a menos que desee ejecutar aún más cosas de Python en el proceso de inicio del servicio, pero fuera de su virtualenv.

los deactivate “comando” proporcionado por virtualenvwrapper es en realidad una función de shell, del mismo modo que para workon. Si tiene un entorno virtual activo, puede enumerar los nombres de estas funciones con typeset -F.

Para usarlos en un script, deben definirse allí, porque las funciones de shell no se propagan a shells secundarios.

Para definir estas funciones, obtenga el virtualenvwrapper.sh script en el script de shell donde pretende invocar estas funciones, por ejemplo:

source $(which virtualenvwrapper.sh)

Eso le permite invocar estas funciones en su script de shell como lo haría en el shell:

deactivate

Actualizar: Lo que describí funciona para las otras funciones proporcionadas por virtualenvwrapper (p. Ej. workon). Supuse incorrectamente que también funcionaría para desactivar, pero ese es un caso más complicado, porque es una función que se definirá solo en el shell donde workon o activate fue corrido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *