webentwicklung-frage-antwort-db.com.de

Wie funktioniert die magische% Paste von IPython?

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.

88
Framester

Sie können nicht direkt in IPython kopieren. Dies sind die Schritte:

  1. Kopieren Sie die Zeilen, die Sie in IPython kopieren möchten, in die Zwischenablage
  2. Geben Sie %paste in IPython ein
  3. Drücken Sie Enter
  4. Profitieren!
131
Framester

Eine Klarstellung zu den Schritten:

  • Kopieren Sie zunächst die Zielzeilen in Ihre Zwischenablage.

  • Geben Sie in die iPython-Eingabeaufforderung ein:

    • Bei Tkinter: %paste eingeben 
    • Ansonsten: %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
35
Yuly

Ab Ipython 5 benötigen Sie keinen magischen Befehl, sondern fügen ihn einfach ein

ipython5

Dank Prompt_toolkit unterstützt IPython 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 
21
Levon

%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.

6
ChillarAnand

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
1
utapyngo

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.

0
haridsv