びったんびったん

ユーザビリティ・プログラミングについて。

WindowsでPython2/3の共存が壊れたらPYTHONHOMEを削除する

Windowsではpypy -2でPython2/3の共存ができますが、再インストールやマイナーバージョンのアップグレードなどで以下のように壊れることがあります。

>py
Fatal Python error: Py_Initialize: unable to load the file system codec
  File "C:\python27\lib\encodings\__init__.py", line 123
    raise CodecRegistryError,\
                            ^
SyntaxError: invalid syntax

Current thread 0x00000e1c (most recent call first):
>py -2
  File "C:\Python36\lib\site.py", line 177
    file=sys.stderr)
        ^
SyntaxError: invalid syntax

これらは環境変数PYTHONHOMEを削除すると直りました。このPYTHONHOMEはPython2/3の両方から参照されるらしく、削除するとそれぞれのデフォルト値が使われうまく動くようになるようです。

もしPythonをデフォルトのパス以外にインストールしている場合、さらに何らかのケアが必要かもしれません。