2009-10-06 6 views
12

Ich mag IPython viel für die Arbeit mit dem Python-Interpreter. Ich finde jedoch ständig, dass ich 10 eintippe, um zu beenden, und werde aufgefordert "Type exit() zu beenden."Exit von ipython

Ich weiß, ich kann Strg-D eingeben, um zu beenden, aber gibt es eine Möglichkeit, die ich 10 ohne Klammern eingeben und IPython beenden kann?

aktualisieren: Dank nosklo, kann dies leicht, indem Sie die folgende Zeile in der main() Funktion in Ihrem ipy_user_conf.py erfolgen:

# type exit to exit 
ip.ex("type(exit).__repr__ = lambda s: setattr(s.shell, 'exit_now', True) or ''") 
+1

I Habe (hatte) auch Probleme mit 'exit' wegen des gleichen Muskelgedächtnisses. Für jeden, der neu bei IPython ist (oder nach einem schnelleren Weg sucht), ist das zweimalige Drücken von -D doppelt so schnell. Schlagen Sie es einfach nicht dreimal oder Sie werden auch von Ihrer (Linux-) Shell ausgeloggt. –

Antwort

11
>>> import sys 
>>> class Quitter(object): 
...  def __repr__(self): 
...   sys.exit() 
... 
>>> exit = Quitter() 

Sie können es wie folgt verwenden:

>>> exit 

EDIT:

Ich benutze nicht ipython mich, aber es scheint einige wierd sys.exit Handler zu haben. Die Lösung, die ich gefunden ist wie folgt:

In [1]: type(exit).__repr__ = lambda s: setattr(s.shell, 'exit_now', True) or '' 

Verbrauch:

In [2]: exit 
+0

Dies funktioniert nicht ganz mit IPython. Es verfügt über eine eigene Quitter-Klasse, die die entsprechende Exit-Methode für die tatsächliche IPShell-Instanz aufruft. Aber die allgemeine Idee ist richtig. –

+0

@Robert Kern: Okay, habe eine "ipython" -Lösung gefunden. – nosklo

3

%exit oder %Exit, wenn Sie eine Bestätigung aktiviert haben und möchte es überspringen. Sie können es z. %e durch setzen execute __IPYTHON__.magic_e = __IPYTHON__.magic_exit in Ihrem ipythonrc.

+0

Danke, aber ich möchte wirklich "exit" eingeben. Weil es im Muskelgedächtnis steckt. –

+2

'% exit' oder'% Exit' sind keine Line Magic Funktionen unter IPython Version 1.1.0. Mit IPython 1.1.0 funktioniert diese Antwort also überhaupt nicht. – halloleo

+1

@halloleo Mein Herz blutet für dich wegen der Antwort von vor 5 Jahren nicht mehr relevant. 'exit' arbeitet mit OOB in den letzten IPython-Versionen und diese ganze Frage ist nicht notwendig. –

0

Mindestens in IPython 0,10, sollten Sie in der Lage sein IPython .rc.confirm_exit gesetzt = False