2012-05-16 5 views
15

Czy istnieje łatwy sposób uzyskania dostępu do zmiennych w interaktywnej przestrzeni nazw IPython. Podczas implementacji projektu, który ma wolną komendę ładowania, chciałbym uruchomić skrypt, aby załadować dane do interaktywnej przestrzeni roboczej, a następnie wywołać drugi skrypt, który używa danych, jak to jest możliwe z MATLAB.Uzyskiwanie dostępu do zmiennych z interaktywnej przestrzeni nazw IPython w skrypcie

W tym prostym przypadku, co chcę zrobić, to

In [20]: a=5 

In [21]: run tst 

gdzie tst.py tylko

print a 

Chodzi o to, że chcę, aby uruchomić skrypt ładowania raz, a potem po prostu pracować na tst.py.

Dzięki!

Odpowiedz

2

Nie ma łatwego ani inteligentnego sposobu, aby to zrobić. Jednym ze sposobów byłoby posiadanie funkcji main w twojej funkcji testowej, a następnie przekazanie jej w swoim środowisku globals, aby zaktualizować numer globals w telefonie wywołującym. Na przykład:

tst.py

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

A potem w ipython:

In [1]: a = 5 

In [2]: import tst 

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

Spróbuj użyć opcji -i na polecenia uruchomienia magicznego ipython za; powoduje uruchomienie skryptu przy użyciu bieżącego interaktywnego obszaru nazw, np. z

load.py:

a = 5 

tst.py:

print a 

Od ipython I get;

In [1]: from load import * 

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

Idealny. Dzięki! – user1398968

Powiązane problemy