2011-03-24 10 views

Respuesta

14

Sé la clase de edad de esta pregunta, pero es todavía lo suficientemente relevante que yo estaba buscando la respuesta, por lo Les dejo lo que he encontrado que funciona así:

al menos en las fuentes 3.2.9+, puede incluir la pitón "init" del archivo para obtener una versión de función pitón 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, entonces ymmv.

+0

Esto está mucho más cerca de lo que realmente usamos (ya que las llamadas 'popen' a' modulecmd' están en el archivo 'python.py' que usted citó), así que estableceré esto para la respuesta. ¡Gracias! –

+0

¡Tuve casi un ataque cardíaco al descubrir esto! Muchas gracias. – yvesonline

+4

En el servidor que estoy usando está en /usr/share/Modules/init/python.py. Encontré la ruta de ejecución del módulo --version (la entrada correcta parece MODULES_INIT_DIR) – lib

0

No directamente, pero aquí hay una posible solución, dependiendo de su entorno. Asumiendo que puede prologar su comando de sistema con ENVVAR=value, se 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 la variable de entorno EDITOR, y luego se lo pasa en la línea de comandos y ejecuta el comando, el cual (en este caso) es EDITOR.

3

Uno de nuestros administradores fue capaz de resolver el problema para mí usando os.popen() llamadas a modulecmd:

cmd = os.popen('/path/to/modulecmd python load my-module') 
exec(cmd) 
Cuestiones relacionadas