2012-10-22 4 views
6

In meiner Installation von ipython habe ich dieses seltsame Problem, wo ich nicht zuverlässig durch Befehlsverlauf mit Pfeil nach oben und unten bewegen kann ... eine Menge Zeit es funktioniert einfach nicht (nichts passiert auf der Taste drücken). Manchmal funktioniert auch das Schreiben normaler Zeichen am Ende des Befehls nicht.ipython rauf und runter Pfeil seltsames Verhalten

Mein System: Mac OSX Lion

I Readline- installiert haben ...

danke für die Hilfe! david

+0

Welche Frontend? Klassische ipython oder qtconsole? Welche Version ? 0.13.1 wurde vor ein paar Stunden veröffentlicht. Sie können versuchen, ein Problem auf GitHub zu öffnen. – Matt

+0

Matt, danke fürs schreiben ... Um deine Frage zu beantworten: klassisches ipython ... Ich habe 0.13.1 ausprobiert und es ist dasselbe. Ja, vielleicht öffne ich das Problem - danke für den Hinweis. – davidhq

Antwort

7

Vergewissern Sie sich, dass Sie Readline vor ipython installiert haben.

sudo pip uninstall ipython

sudo pip install readline ipython

(Ich weiß, diese Frage ein paar Monate alt ist, aber für die Zukunft)

+1

Ich musste Ipython nicht deinstallieren. Nur "easy_install readline" hat es geschafft. – Varuna

+1

Sie müssen ncurses-devel (für redhat) oder libncurses5-dev für debian/ubuntu installieren, wenn "-lncurses" nicht gefunden Fehler beim Ausführen von pip – Bedros

5

Ich hatte Readline- mit easy_install readline zu installieren und dass es behoben. pip install readline Verwendung nicht für mich arbeiten, und gab ipython eine Warnung:

****************************************************************************** 
libedit detected - readline will not be well behaved, including but not limited to: 
    * crashes on tab completion 
    * incorrect history navigation 
    * corrupting long-lines 
    * failure to wrap or indent lines properly 
It is highly recommended that you install readline, which is easy_installable: 
    easy_install readline 
Note that `pip install readline` generally DOES NOT WORK, because 
it installs to site-packages, which come *after* lib-dynload in sys.path, 
where readline is located. It must be `easy_install readline`, or to a custom 
location on your PYTHONPATH (even --user comes after lib-dyload). 
****************************************************************************** 
+0

Für mich, die Installation 'readline' zuerst dann' ipython' funktioniert. –

0

Nach Schwierigkeiten in ipython und & -down Pfeile Up- Geschichte zuzugreifen und diesen Beitrag durchsuchen, eine einfache Lösung (ausschalten „Scroll Schloss ") stellte sich heraus, um für mich zu arbeiten.

+0

Könnten Sie bitte Ihre Antwort näher erläutern, indem Sie ein wenig mehr Beschreibung der von Ihnen bereitgestellten Lösung hinzufügen? – abarisone

0

Dies ist eine absichtliche Funktion von IPython. Wenn Sie "abc" eingeben und dann den Aufwärtspfeil drücken, wird nur durch Zeilen gescrollt, die mit "abc" beginnen. Wenn Sie während des Scrollens auf "Heben/Rechts" klicken, wird das gleiche Verhalten ausgelöst. Der gesamte Inhalt der aktuellen Zeile wird als Suchpräfix interpretiert. Es werden nur Zeilen angezeigt, die mit allen beginnen, die bei weiteren Auf-/Ab-Tastendrücken angezeigt werden. Sie können dieses Verhalten in Ihrer PYTHONSTARTUP-Datei ändern. Ich habe die folgenden Zeilen:

import readline 
# Prevent ctrl-p/ctrl-n/Up/Down from doing prefix searching 
readline.parse_and_bind('"\\C-p": previous-history') 
readline.parse_and_bind('"\\C-n": next-history') 
readline.parse_and_bind('"\\e[A": previous-history') 
readline.parse_and_bind('"\\e[B": next-history') 

Wenn Sie neugierig sind, here are the bindings in IPython's source code, die wir überschreiben.

Unrelated, aber Ich mag an auch Readline- die Standard ctrl-w außer Kraft setzen:

# Ctrl-W behavior more like Vim 
readline.parse_and_bind('"\\C-w": backward-kill-word')