このエントリーをはてなブックマークに追加 にほんブログ村 IT技術ブログ システムエンジニアへ
にほんブログ村

先日、仕事で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」というファイルを読み込んでいるようだったので、そのファイルの内容を見てみると、過去にインタラクティブシェルで実行した日本語文章を含むコードが記録されていました。

ファイル名の通り、履歴を保持しているファイルだったようなので、このファイル内容を消したら、これまで通り、例外が出なくなりました。

履歴が保存されているともつゆ知らず、ちょっとハマりました。

ひとまず覚書ということで。