Czy istnieje sposób, aby skrypt Pythona automatycznie wykrywał, czy jest uruchamiany interaktywnie czy nie? Alternatywnie, czy można wykryć, czy ipython jest używany w porównaniu do zwykłego pliku wykonywalnego C python?Wykrywanie, kiedy skrypt Pythona jest uruchamiany interaktywnie w ipython
Tło: Moje skrypty python zwykle zawierają wywołanie funkcji exit(). Od czasu do czasu uruchamiam skrypty interaktywnie w celu debugowania i profilowania, zwykle w ipythonie. Kiedy uruchamiam interaktywnie, chcę zablokować wywołania, aby wyjść.
Wyjaśnienie:
Załóżmy, że mam skrypt, myscript.py, który wygląda następująco:
#!/usr/bin/python
...do useful stuff...
exit(exit_status)
Czasami chcę, aby uruchomić skrypt w sesji ipython że już rozpoczął , mówiąc coś w stylu:
In [nnn]: %run -p -D myscript.pstats myscript.py
na końcu skryptu, wyjście() wywołanie spowoduje ipython powiesić podczas gdy on sks mnie, jeśli naprawdę chcę wyjść. Jest to niewielka irytacja podczas debugowania (zbyt małe, aby mnie obchodziło), ale może to zepsuć wyniki profilowania: wiersz wyjścia zostaje włączony do wyników profilu (co utrudnia analizę, jeśli rozpocznę sesję profilowania przed wyjściem na lunch) .
Co chciałbym to coś, co pozwala mi zmodyfikować mój skrypt wygląda tak:
#!/usr/bin/python
...do useful stuff...
if is_python_running_interactively():
print "The exit_status was %d" % (exit_status,)
else:
exit(exit_status)
co ze standardową powłoką interaktywną otrzymaną za pomocą 'pythona'? – n611x007