tricks notebook magic commands python ipython

python - magic - show execution time jupyter notebook



¿Cómo funciona el magic% paste de IPython? (6)

Quiero copiar el código Python ya sangrado / funciones y clases completas en IPython. Cada vez que pruebo la sangría se arruina y aparece el siguiente mensaje de error:

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.


A partir de Ipython 5 no necesitas ningún comando mágico, simplemente pégalo

Gracias a prompt_toolkit , IPython ahora es compatible con:

  • Resaltado de sintaxis a medida que escribe
  • Real edición multilínea (las teclas de flecha arriba y abajo se mueven entre líneas)
  • Pegar varias líneas sin romper la sangría o ejecutar el código de inmediato
  • Mejor interfaz de finalización de código (planeamos mejorarla más) Soporte de mouse opcional

Más sobre esto here

Para actualizar ipython a la última versión

pip install ipython --upgrade


No puede copiar a IPython directamente. Estos son los pasos:

  1. Copie las líneas que desea copiar en IPython en el portapapeles
  2. Introduzca %paste en IPython
  3. Presione enter
  4. ¡Lucro!

Para usuarios de ubuntu que están en Python 3.

El python-tk es para Python 2.

Para hacer que %paste funcione en Python 3, instale el paquete python3-tk :

sudo apt-get install python3-tk


Una aclaración sobre los pasos:

  • Primero, copia las líneas objetivo en tu portapapeles.

  • Escriba en el indicador de iPython:

    • Si está en Tkinter: ingrese %paste
    • De lo contrario: ingrese %cpaste
  • Pega (Ctrl-V) y presiona enter.

  • Luego escribe -- y presiona enter.

Por ejemplo:

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


Una de las respuestas útiles se perdió en los comentarios, por lo que quería reformularla junto con agregar una referencia para otra función útil de magia de IPython.

Primero para repetir lo que dijo @EOL, una forma de resolver el problema de OP es desactivar la indentación automática ejecutando %autoindent y haciendo el pegado (no es necesario si está utilizando %paste , por supuesto).

Ahora, para agregar más información a lo que ya está aquí, otro modo útil en IPython es %doctest_mode que le permite copiar el ejemplo de pegar y probar los fragmentos de las cadenas de documentación. Esto también es útil para ejecutar la salida de sesión interactiva de Python que puede encontrar en la documentación y en los foros en línea, sin tener que borrar primero las cadenas de aviso.


%paste requiere Tkinter . Si estás en ubuntu, puedes instalarlo

sudo apt-get install python-tk

Si estás en Python3

sudo apt-get install python3-tk

Luego reinicie ipython y use %paste para pegar desde su portapapeles.