Je veux copier du code Python/des fonctions et des classes déjà indentées dans IPython. A chaque fois que j'essaye, l'indentation est foutue et le message d'erreur suivant s'affiche:
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.
Vous ne pouvez pas copier directement sur IPython. Ce sont les étapes:
%paste
dans IPythonUne clarification sur les étapes:
Commencez par copier les lignes cibles dans votre presse-papiers.
Tapez dans l'invite iPython:
%paste
%cpaste
Collez (Ctrl-V) et appuyez sur Entrée.
Ensuite, tapez --
et appuyez sur Entrée.
Par exemple:
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
À partir de Ipython 5, vous n'avez besoin d'aucune commande magique, collez-la simplement
Grâce à
Prompt_toolkit
,IPython
prend désormais en charge:
- Mise en évidence de la syntaxe lors de la frappe
- Édition multi-lignes réelle (les touches fléchées haut et bas permettent de passer d'une ligne à une autre)
- Coller plusieurs lignes sans casser l'indentation ni exécuter le code immédiatement
- Meilleure interface de complétion de code (nous prévoyons de l'améliorer davantage) Prise en charge optionnelle de la souris
Plus sur ceci ici
Pour mettre à jour ipython
vers la dernière version
pip install ipython --upgrade
%paste
requiert Tkinter
. Si vous êtes dans Ubuntu, vous pouvez l’installer de la manière suivante:
Sudo apt-get install python-tk
Si vous êtes sur Python3
Sudo apt-get install python3-tk
Puis redémarrez ipython et utilisez %paste
pour le coller dans votre presse-papiers.
Pour les utilisateurs d'ubuntu sous Python 3.
Le python-tk
est pour Python 2.
Pour que %paste
fonctionne sur Python 3, installez le paquetage python3-tk
:
Sudo apt-get install python3-tk
L'une des réponses utiles a été perdue dans les commentaires. Nous avons donc souhaité la reformuler en ajoutant une référence pour une autre fonction magique utile IPython.
Pour commencer par rappeler ce que @EOL a dit, un moyen de résoudre le problème de OP consiste à désactiver l'auto-indentation en exécutant d'abord %autoindent
et en effectuant le collage (inutile si vous utilisez %paste
, bien sûr).
Maintenant, pour ajouter plus d’informations à ce qui existe déjà ici, un autre mode utile dans IPython est %doctest_mode
, qui vous permet de copier un exemple de collage et de tester des extraits de code provenant de chaînes de documentation. Cela est également utile pour exécuter une sortie de session python interactive que vous pourriez trouver dans la documentation et les forums en ligne, sans avoir à effacer au préalable les chaînes de l'invite.