Cum folosește IPython magia% pastă?

Vreau să copiez deja codul Python/funcții și clase întregi în IPython. De fiecare data cand incerc indentatia este incurcat si primesc urmatorul mesaj de eroare:

IndentationError: unindent does not match any outer indentation level (, line 12)

Dacă doriți să inserați codul în IPython, încercați funcțiile magice% paste și% cpaste.

0
Știu, este probabil deja în stackoverflow, dar nu a găsit-o după 3 căutări, așa că am adăugat versiunea proprie.
adăugat autor Framester, sursa

6 răspunsuri

Nu puteți copia direct la IPython. Aceștia sunt pașii:

  1. Copiați liniile pe care doriți să le copiați în IPython în clipboard
  2. Introduceți % paste în IPython
  3. Apăsați enter
  4. profit!
0
adăugat
De fapt, puteți copia direct codul IPython: poate fi necesar să dezactivați mai întâi auto-indentarea introducând % autoindent .
adăugat autor EOL, sursa
% paste necesită Tkinter deși, deci dacă nu aveți că un alt pariu bun este% cpaste
adăugat autor yekta, sursa
Multumesc EOL! +1 pentru tine
adăugat autor Framester, sursa
Nu aveți nevoie de codul% before paste .
adăugat autor wordsforthewise, sursa
În Ipython 5 , puteți doar să inserați codul. Nu mai aveți nevoie de % paste . Citiți acest răspuns .
adăugat autor Levon, sursa

Pentru utilizatorii ubuntu care se află pe Python 3.

python-tk este pentru Python 2.

Pentru a face % paste pentru Python 3, instalați pachetul python3-tk :

sudo apt-get install python3-tk
0
adăugat

%paste requires Tkinter. If you are in ubuntu, you can install it by

sudo apt-get install python-tk

Dacă sunteți pe Python3

sudo apt-get install python3-tk

Apoi reporniți ipython și folosiți % paste pentru a lipi din clipboard.

0
adăugat

O clarificare a pașilor:

  • First, copy target lines into your clipboard.

  • Type into the iPython prompt:

    • If on Tkinter: enter %paste
    • Otherwise: enter %cpaste
  • Paste (Ctrl-V) and hit enter.

  • Then type -- and hit enter.

De exemplu:

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
0
adăugat
Nu trebuie să Ctrl-V. Doar tastați% paste și apăsați enter.
adăugat autor SeF, sursa

Unul dintre răspunsurile utile a fost pierdut în comentarii, așa că a vrut să-l reamintească împreună cu adăugarea unei referințe pentru o altă funcție utilă IPython magic.

În primul rând, pentru a reda ceea ce a spus @EOL, o modalitate de a rezolva problema OP este să dezactivați auto-indentarea executând mai întâi codul %indindent și făcând paste (nu este necesar dacă utilizați % paste , desigur).

Acum, pentru a adăuga mai multe informații la ceea ce există deja aici, un alt mod util în IPython este % doctest_mode , care vă permite să copiați exemplul de paste și fragmente de test din șiruri de doc. Acest lucru este, de asemenea, util pentru a executa o ieșire interactivă a sesiunii python pe care ați putea să o găsiți în documentație și pe forumuri online, fără a fi nevoie să ștergeți mai întâi șirurile prompte.

0
adăugat

Începând cu Ipython 5 , nu aveți nevoie de nici o comandă magică, pur și simplu lipiți-o

ipython5

Datorită prompt_toolkit , IPython acceptă acum:

     
      
  • Scrierea sintaxei pe măsură ce tastați
  •   
  • Redactarea reală în mai multe linii (tastele săgeți în sus și în jos se mișcă între rânduri)
  •   
  • Pastă multi-linie fără ruperea indentării sau executarea rapidă a codului
  •   
  • Interfață de finalizare mai bună a codului (planificăm să îmbunătățim acest lucru) Suport opțional pentru mouse
  •   

More on this here

Pentru a face upgrade ipython la ultima versiune

pip install ipython --upgrade 
0
adăugat
Acest lucru susține, de asemenea, ieșirea din Python repl, cod care începe cu trei semne > , astfel: >>> a = 1 + 2
adăugat autor Flimm, sursa
Este posibil să lipiți mai multe linii și să executați automat codul la fiecare rând?
adăugat autor Eric Duminil, sursa
da, doar lipiți codul și apăsați pe Enter. dacă doriți să depanați verificarea% pdb sau ipdb. exemplu
adăugat autor Levon, sursa
wow aweomse sale
adăugat autor manpreet singh, sursa
Python România
Python România
100 participanți

Comunitatea pasionaților de Python din România.