にほんブログ村
先日、仕事でWindowsのpythonを使った時にハマったことの覚書です。
これまで、普通にAnaconda Promptで「python」と打てば、インタラクティブモード(対話モード)でコードが実行できたのですが、先日、いつも通りに「python」と打った時に以下のようなエラーが出ました。
> python
Python 3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 11:27:44) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
Failed calling sys.__interactivehook__
Traceback (most recent call last):
File "D:\AnacondaEnvs\lib\site.py", line 410, in register_readline
readline.read_history_file(history)
File "D:\AnacondaEnvs\\lib\site-packages\pyreadline\rlmain.py", line 165, in read_history_file
self.mode._history.read_history_file(filename)
File "D:\AnacondaEnvs\lib\site-packages\pyreadline\lineeditor\history.py", line 82, in read_history_file
for line in open(filename, 'r'):
UnicodeDecodeError: 'cp932' codec can't decode byte 0x81 in position 20: illegal multibyte sequence
>>>
初めて見た現象だったので困惑しましたが、冷静に例外を見ると、どうもpython起動時に読み込むファイルがよろしく内容でした。
そこで色々調べたところ、C:\Users\{ユーザー名}\のフォルダ配下の「.python_history」というファイルを読み込んでいるようだったので、そのファイルの内容を見てみると、過去にインタラクティブシェルで実行した日本語文章を含むコードが記録されていました。
ファイル名の通り、履歴を保持しているファイルだったようなので、このファイル内容を消したら、これまで通り、例外が出なくなりました。
履歴が保存されているともつゆ知らず、ちょっとハマりました。
ひとまず覚書ということで。
関連記事
2019/01/08 0:55