Anaconda + VS Code + Windows環境におけるRust のデバッグ環境構築のはまりどころ
VS Code+Windows上にRustのデバッグ環境を構築するため、CodeLLDBのv1.4.0(2019/11現在の最新版)を導入した。 CodeLLDBの実行にはPythonが必要だが、python.orgから配布されているPythonが想定されており、Anaconda配布のものを使用するには一工夫必要だったのでメモ。
2019/11/25追記
CodeLLDBのバージョンがv1.4.1に上がって仕様変更があり、
だけでよくなった。
まとめ
1.以下のコマンドを実行する。ただし、3.7
の部分は、自分がインストールしているPythonのバージョンによって変えること。
reg add "HKEY_CURRENT_USER\Software\Python\PythonCore\3.7" /v "SysVersion" /t REG_SZ /d "3.7"
2.環境変数PYTHONHOME
にHKEY_CURRENT_USER\Software\Python\PythonCore\3.7\InstallPath
と同じ値(C:\Users\USERNAME\Miniconda3
など)を設定する。
詳細
CodeLLDBでは、Python3.3以降がインストールされているか確認するため、
まずpython3.dll
の場所を特定するようになっている。
具体的な手順としては、レジストリ:HKEY_CURRENT_USER\Software\Python\PythonCore\3.7
以下のSysVersion
エントリ値が3以上であれば、
HKEY_CURRENT_USER\Software\Python\PythonCore\3.7\InstallPath
に設定された値を当該dllへのパスと認識する。
言うまでもないが、インストールしたPythonのバージョンによって3.7
の値は変化する。
また、上記のHKEY_CURRENT_USER
はHKEY_LOCAL_MACHINE
でも認識される。
AnacondaでPythonをインストールした場合、SysVersion
エントリが存在しないため、デバッガ起動時に"CodeLLDB requires Python 3.3 or later (64-bit), but looks like it is not installed on this machine."と怒られる。
というわけで、以下のコマンドをターミナルから実行してエントリを追加すればよい。ただし、3.7
の部分は、自分がインストールしているPythonのバージョンによって変えること。
reg add "HKEY_CURRENT_USER\Software\Python\PythonCore\3.7" /v "SysVersion" /t REG_SZ /d "3.7"
加えて、環境変数PYTHONHOME
にHKEY_CURRENT_USER\Software\Python\PythonCore\3.7\InstallPath
と同じ値(C:\Users\USERNAME\Miniconda3
など)を設定するのも必要。
これをしないとModuleNotFoundError: No module named 'encodings'
で怒られる。
CodeLLDBのIssuesにも投げた。 github.com
余談
本件とは関係ないが、CodeLLDBで「デバッグなしで実行」すると落ちる。python.orgからダウンロードしたPythonでも落ちた。 詳細は以下。 github.com