Windows10 python3.7 で pipenvを利用しようとしたら失敗したので調べた話。

pipenv install

とやったら UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 271: invalid start byte というよく見るエラーが出ました。

出た箇所が virtualenv.py のline = line.decode(fs_encoding)で、 ははぁ、このエンコーディングがCP932じゃないとだめなのにutf-8になっているのが原因か、と調べ始めたところ、

PEP 529 -- Change Windows filesystem encoding to UTF-8 | Python.org

にたどり着き、ついで sysパッケージを見たところ、

https://docs.python.jp/3/library/sys.html#sys.getfilesystemencoding にて、python3.6で utf-8になったから、戻したい場合は sys._enablelegacywindowsfsencoding()を使いましょうとありました。

そこで、 pythonインストール場所の lib\site-packages\に sitecustomize.pyを以下の内容で作成し、事なきを得ました。

import sys
sys._enablelegacywindowsfsencoding()

sitecustomizeについては site — Site-specific configuration hook — Python 3.7.1 documentation をご覧ください。