Ich möchte bereits eingerückten Python-Code/ganze Funktionen und Klassen in IPython kopieren. Jedes Mal, wenn ich es versuche, ist die Einrückung fehlerhaft und ich erhalte folgende Fehlermeldung:
IndentationError: unindent does not match any outer indentation level (<ipython-input-23-354f8c8be51b>, line 12)
If you want to paste code into IPython, try the %paste and %cpaste magic functions.
Sie können nicht direkt in IPython kopieren. Dies sind die Schritte:
%paste
in IPython einEine Klarstellung zu den Schritten:
Kopieren Sie zunächst die Zielzeilen in Ihre Zwischenablage.
Geben Sie in die iPython-Eingabeaufforderung ein:
%paste
eingeben %cpaste
eingeben Fügen Sie (Strg-V) ein und drücken Sie die Eingabetaste.
Geben Sie dann --
ein und drücken Sie die Eingabetaste.
Zum Beispiel:
In [1]: %cpaste
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
:for l in "Hello World":
: print l,
:--
H e l l o W o r l d
Ab Ipython 5 benötigen Sie keinen magischen Befehl, sondern fügen ihn einfach ein
Dank
Prompt_toolkit
unterstütztIPython
jetzt:
- Syntax-Hervorhebung bei der Eingabe
- Echte Multi-Line-Bearbeitung (Auf- und Abwärtspfeiltasten bewegen sich zwischen den Zeilen)
- Mehrzeiliges Einfügen ohne Einrückung zu brechen oder Code sofort auszuführen
- Bessere Code-Vervollständigungsschnittstelle (wir planen, dies noch zu verbessern) Optionale Mausunterstützung
Mehr dazu hier
So aktualisieren Sie ipython
auf die neueste Version
pip install ipython --upgrade
%paste
erfordert Tkinter
. Wenn Sie sich in Ubuntu befinden, können Sie es mit installieren
Sudo apt-get install python-tk
Wenn Sie mit Python3 arbeiten
Sudo apt-get install python3-tk
Starten Sie dann ipython neu und fügen Sie mit %paste
aus Ihrer Zwischenablage ein.
Für Ubuntu-Benutzer, die Python 3 verwenden.
Der python-tk
ist für Python 2.
Damit %paste
unter Python 3 funktioniert, installieren Sie das Paket python3-tk
:
Sudo apt-get install python3-tk
Eine der nützlichen Antworten ging in den Kommentaren verloren, deshalb wollte ich sie zusammen mit dem Hinzufügen einer Referenz für eine andere nützliche IPython-Zauberfunktion neu formulieren.
Um erneut zu formulieren, was @EOL gesagt hat, besteht eine Möglichkeit, das Problem von OP zu lösen, darin, die automatische Einrückung zu deaktivieren, indem zuerst %autoindent
ausgeführt und der Einfügevorgang ausgeführt wird (nicht erforderlich, wenn Sie %paste
verwenden).
Um jetzt mehr Informationen zu dem hinzuzufügen, was hier bereits vorhanden ist, ist ein weiterer nützlicher Modus in IPython %doctest_mode
, mit dem Sie Einfügebeispiele kopieren und Snippets aus Dokumentstrings testen können. Dies ist auch nützlich, um eine interaktive Python-Sitzungsausgabe auszuführen, die Sie in Dokumentation und Online-Foren finden können, ohne die Eingabeaufforderungszeichenfolgen zuvor entfernen zu müssen.