2010-11-09 16 views
31

Często proszono mnie o debugowanie skryptów Pythona napisanych przez innych. Chciałbym wysłać te skrypty do IPython, aby spadły one do powłoki IPython w momencie, gdy skrypt się nie powiedzie.Opcje wiersza polecenia dla skryptów IPython *?

Niestety, nie mogę znaleźć sposobu, aby wysłać (wymagane) opcje wiersza polecenia wymagane przez skrypty.

ipython zakłada, wszystko jest dla ipython kiedy mijam skrypt i jego opcje jak:

ipython <script_name> <script_options> 

Czy istnieje rozwiązanie lub obejście?

Odpowiedz

23
ipython -i -c "%run test.py 1 2 3 4" 
+0

Bardzo ładne! Niestety, kiedy wyjdzie na jaw, przywraca mnie z powrotem do linii poleceń OS, a nie do zachęty IPython. Propozycje? –

+1

Można po prostu uruchomić ipython, a następnie wykonać% uruchom test.py 1 2 3 4 –

+1

W rzeczywistości dodanie -i powoduje, że pozostaje on w powłoce. –

39
ipython -- sometest.py 1 2 3 4 
+2

To działa, ale nie mogłem znaleźć tego w dokumentach, czy możesz wskazać mi, gdzie jest to udokumentowane? –

+3

Aby pozostać w interaktywnej powłoce, użyj składni 'ipython -i - sometest.py 1 2 3 4'. –

+2

Należy zauważyć, że "-" jest funkcją interpretera powłoki systemu i nie jest specyficzne dla powłoki ipython –

4

wiem Tam jest już przyjęte rozwiązanie, ale w najnowszej wersji ipython to nie będzie działać. Oto wycinania i wklejania polecenia używać do uruchamiania testów tornado z --autoreload

ipython --c="%run test.py --autoreload" 

ten korzysta ipython .11.

1

Prosty przykład: here.

script.py

from sys import argv 

script, first, second, third = argv 

print "The script is called:", script 
print "Your first variable is:", first 
print "Your second variable is:", second 
print "Your third variable is:", third 

shell:

$ ipython script.py stuff things that 
The script is called: ex13.py 
Your first variable is: stuff 
Your second variable is: things 
Your third variable is: that 
0

Wiele aspektów zachowań ipython mogą być sterowane za pomocą ustawień w ipython plików konfiguracyjnych użytkownika, które zwykle znajdują się w ~/.ipython/. Użytkownik może utworzyć wiele profili , każdy z innymi ustawieniami parametrów konfiguracyjnych. Każdy profil ma swoje ustawienia w osobnym folderze w folderze .ipython. Domyślny profil to profile_default, a głównym plikiem do dostosowania jest ipython_config.py. Domyślnie jest to prawie całkowicie komentowane, z komentarzem linii pokazującym zmienne konfiguracyjne i ich domyślne ustawienia. Odkomentuj lub wstaw linie, aby zmienić zachowanie.

Aby zmienić sposób ipython zachowuje się w końcu uruchomiony skrypt, zastosowanie:

c.TerminalIPythonApp.force_interact = True 

Potem, gdy kończy skrypt (lub zgłasza wyjątek), ipython będą wyświetlane i przedstawić Państwu wierszu. To jest to samo zachowanie, co ipython -i.

Używam tego ustawienia w moim domyślnym profilu, ponieważ w ten sposób I zawsze chce mieć zachowanie IPython. Jeśli tak nie jest, możesz utworzyć profil z tym zachowaniem, aby używać go tylko wtedy, gdy chcesz tego zachowania. Lub po prostu używaj opcji (ewidentnie nieudokumentowanej) -i.

Dokumentacja konfiguracji IPython jest dostępna tutaj:

Powiązane problemy