%run
使用标有# -*- coding: utf-8 -*-
并以非 utf8 格式保存的 python 文件会使 ipython 崩溃(返回 shell)。
要发生崩溃,文件必须:
这是一个复制此内容的小脚本,保存在 ISO-8859-15 中,以及堆栈跟踪:
文件.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]'}
当然,文件首先应该以正确的格式保存。
但理想情况下,会话不会丢失,并且会发出信息更丰富的消息。
我数了 13 个链接回溯——我认为在不使用递归的情况下获得这么多回溯应该会给你一些奖励。 ;-)
如果文件名不容易获得,那么这里是我用来追查罪魁祸首的命令:
find . -name "*.py" -exec file {} \; | grep -v ASCII | grep -v UTF-8 | grep -v empty
最有用的评论
我数了 13 个链接回溯——我认为在不使用递归的情况下获得这么多回溯应该会给你一些奖励。 ;-)