Y at-il un moyen pour un script python de détecter automatiquement s'il est exécuté de manière interactive ou non? Alternativement, peut-on détecter si ipython est utilisé par rapport à l'exécutable c python normal? Contexte: Mes scripts python ont généralement un appel à exit() en eux. De temps en temps, je cours les scripts interactivement pour le débogage et le profilage, habituellement dans ipython. Lorsque je cours de manière interactive, je veux supprimer les appels pour quitter.Détection de l'exécution interactive d'un script python dans ipython
Précision:
Supposons que j'ai un script, myscript.py, qui ressemble à:
#!/usr/bin/python
...do useful stuff...
exit(exit_status)
Parfois, je veux exécuter le script dans une session IPython que je l'ai déjà commencé , en disant quelque chose comme:
In [nnn]: %run -p -D myscript.pstats myscript.py
a la fin du script, l'appel exit() provoquera ipython bloqué alors qu'il a sks moi si je veux vraiment sortir. Ceci est une gêne mineure lors du débogage (trop mineur pour moi), mais cela peut gâcher les résultats de profilage: l'invite de sortie est incluse dans les résultats du profil (rendant l'analyse plus difficile si je démarre une session de profilage avant de déjeuner) .
Ce que je voudrais quelque chose qui me permet modifier mon script pour qu'il ressemble à:
#!/usr/bin/python
...do useful stuff...
if is_python_running_interactively():
print "The exit_status was %d" % (exit_status,)
else:
exit(exit_status)
qu'en est-il du shell interactif standard que vous avez avec 'python'? – n611x007