%run
ing un fichier python marqué avec # -*- coding: utf-8 -*-
et enregistré dans un format non-utf8 peut planter ipython (retour au shell).
Pour obtenir le crash, le fichier doit :
Voici un petit script reproduisant cela, enregistré dans ISO-8859-15, avec la trace de la pile :
fichiers.zip
%run wrong_encoding.py
...
... <long trace>
...
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 78: invalid continuation byte
python3 -c "import IPython; print(IPython.sys_info())"
{'commit_hash': '5c9c918',
'commit_source': 'installation',
'default_encoding': 'UTF-8',
'ipython_path': '/usr/lib/python3.4/site-packages/IPython',
'ipython_version': '5.1.0',
'os_name': 'posix',
'platform': 'Linux-3.16.7-42-desktop-x86_64-with-SuSE-13.2-x86_64',
'sys_executable': '/usr/bin/python3',
'sys_platform': 'linux',
'sys_version': '3.4.5 (default, Jul 03 2016, 13:55:08) [GCC]'}
Bien sûr, le fichier doit avoir été enregistré dans le bon format, en premier lieu.
Mais idéalement, la session ne serait pas perdue et un message plus informatif serait diffusé.
Je compte treize retraçages enchaînés - je pense qu'en obtenir autant sans utiliser la récursivité devrait vous rapporter une sorte de prix. ;-)
Si le nom du fichier n'est pas facile à atteindre, voici la commande que j'ai utilisée pour retrouver le coupable :
find . -name "*.py" -exec file {} \; | grep -v ASCII | grep -v UTF-8 | grep -v empty
Commentaire le plus utile
Je compte treize retraçages enchaînés - je pense qu'en obtenir autant sans utiliser la récursivité devrait vous rapporter une sorte de prix. ;-)