source make activar python linux environment

make - ¿Es posible cambiar el entorno de un proceso padre en python?



virtual environments (3)

Ningún proceso puede cambiar su proceso principal (o cualquier otro entorno de proceso existente).

Sin embargo, puede crear un nuevo entorno creando un nuevo shell interactivo con el entorno modificado.

Debe generar una nueva copia del intérprete de comandos que utiliza el entorno actualizado y tiene acceso a las funciones stdin, stdout y stderr existentes, y realiza su danza de reiniciación.

Necesita hacer algo como usar el subproceso. Popen para ejecutar /bin/bash -i .

Entonces, el shell original ejecuta Python, que ejecuta un nuevo shell. Sí, tienes muchos procesos en ejecución. No, no está tan mal porque el shell original y Python no están haciendo nada, excepto esperar a que termine la subshell para que también puedan salir limpiamente.

En Linux Cuando invoco python desde el shell, replica su entorno e inicia el proceso de python. Por lo tanto, si hago algo como lo siguiente:

import os os.environ["FOO"] = "A_Value"

Cuando vuelva el proceso de python, FOO, asumiendo que no estaba definido originalmente, seguirá sin definirse. ¿Hay alguna manera para que el proceso de Python (o cualquier proceso secundario) modifique el entorno de su proceso principal?

Sé que normalmente resuelves este problema usando algo como

source script_name.sh

Pero esto entra en conflicto con otros requisitos que tengo.


No es posible, para ningún proceso secundario, cambiar el entorno del proceso principal. Lo mejor que puede hacer es dar salida a instrucciones de shell para stdout que luego crea, o escríbalas en un archivo que haya obtenido en el padre.


Usaría la declaración de evaluación de bash, y haría que el script de python generara el código de shell

child.py:

#!/usr/bin/env python print ''FOO="A_Value"''

parent.sh

#!/bin/bash eval `./child.py`