2012-05-16 10 views
15

¿Hay alguna manera fácil de acceder a las variables en el espacio de nombres interactivo de IPython? Al implementar un proyecto que tiene un comando de carga lenta, me gustaría ejecutar un script para cargar los datos en el espacio de trabajo interactivo, luego llamar un segundo script que use los datos, como es posible con MATLAB.Acceso a las variables desde el espacio de nombres interactivo de IPython en una secuencia de comandos

En este caso sencillo, lo que quiero hacer es

In [20]: a=5 

In [21]: run tst 

donde tst.py es sólo

print a 

La idea es que quiero para ejecutar el script de carga una vez, a continuación, sólo trabajar en tst.py.

Gracias!

Respuesta

2

No hay una manera fácil o inteligente de hacerlo. Una forma sería tener una función main en su función de prueba y luego pasar el globals de su entorno para actualizar el globals en la persona que llama. Por ejemplo:

tst.py

def main(borrowed_globals): 
    globals().update(borrowed_globals) 
    print a 

Y luego, en IPython:

In [1]: a = 5 

In [2]: import tst 

In [3]: tst.main(globals()) 
5 
20

intente usar la opción -i en orden de marcha magia de IPython; hace que el script se ejecute utilizando el espacio de nombres interactivo actual, p. con

load.py:

a = 5 

tst.py:

print a 

De IPython consigo;

In [1]: from load import * 

In [2]: run -i tst 
5 
+0

Perfecto. ¡Gracias! – user1398968

Cuestiones relacionadas