Quiero copiar el código Python / funciones y clases completas ya sangradas en IPython. Cada vez que intento, la sangría se estropea 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.

Respuestas:
No puede copiar a IPython directamente. Estos son los pasos:
%pasteen IPythonfuente
%autoindent.Ipython 5puede simplemente pegar el código. No necesito%pastemás. Lea esta respuesta .paste.Una aclaración sobre los pasos:
Primero, copie las líneas de destino en su portapapeles.
Escriba en el indicador de iPython:
%paste%cpastePega (Ctrl-V) y presiona Enter.
Luego escribe
--y presiona enter.Por ejemplo:
fuente
A partir de Ipython 5 no necesitas ningún comando mágico, solo pégalo
Más sobre esto aquí
Para actualizar
ipythona la última versiónfuente
>signos como este:>>> a = 1 + 2%pasterequiereTkinter. Si está en ubuntu, puede instalarloSi estás en Python3
Luego reinicie ipython y use
%pastepara pegar desde su portapapeles.fuente
Una de las respuestas útiles se perdió en los comentarios, así que quería reformularla junto con agregar una referencia para otra función mágica útil de IPython.
Primero, para reafirmar lo que dijo @EOL, una forma de resolver el problema de OP es desactivar la sangría automática ejecutando primero
%autoindenty pegando (no es necesario si lo está usando%paste, por supuesto).Ahora, para agregar más información a lo que ya está allí, un modo más útil en IPython es
%doctest_modeque le permite copiar, pegar, ejemplos y probar fragmentos de cadenas de documentos. 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 eliminar primero las cadenas de mensajes.fuente
Para usuarios de ubuntu que están en Python 3.
El
python-tkes para Python 2.Para que
%pastefuncione en Python 3, instale elpython3-tkpaquete:fuente