script - python import relativo
Cargando módulos de entorno dentro de un script de python (3)
No directamente, pero aquí hay una posible solución, dependiendo de su entorno. Suponiendo que puede ENVVAR=value
comando de su sistema con el ENVVAR=value
, puede hacer algo en este sentido:
import os
os.environ[''EDITOR''] = ''vi''
cmd = "EDITOR=%(EDITOR)s $EDITOR" % os.environ
os.system(cmd)
El código asigna vi a su variable de entorno EDITOR, luego lo pasa a la línea de comando y ejecuta el comando, que (en este caso) es EDITOR.
¿Hay alguna forma de que un script de Python cargue y use módulos de entorno ? os.system(''module load xxx'')
no funciona porque los ejecuta en una subshell (al menos, creo que eso es lo que está pasando).
Sé que esta pregunta es bastante antigua, pero aún es lo suficientemente relevante como para buscar la respuesta, así que publico lo que encontré que también funciona:
Al menos en las fuentes 3.2.9+, puede incluir el archivo "init" de python para obtener una versión de la función python del módulo:
>>> execfile(''/usr/local/Modules/default/init/python.py'')
>>> module(''list'')
No Modulefiles Currently Loaded.
>>> module(''load'',''foo'')
>>> module(''list'')
Currently Loaded Modulefiles:
1) foo/1.0
Me han dicho que las versiones anteriores pueden hacer lo mismo sin la extensión .py, pero eso es de segunda mano, así que ymmv.
Ubicación alternativa del archivo "init" (del comentario de @lib): /usr/share/Modules/init/python.py
Uno de nuestros administradores fue capaz de resolver el problema por mí usando las llamadas os.popen()
a modulecmd
:
cmd = os.popen(''/path/to/modulecmd python load my-module'')
exec(cmd)