LoginSignup
13
8

More than 3 years have passed since last update.

俺はRustのDebugをしようとしていた。そうしたらpython 3.6.9をWindows10でx64 Release buildしていた

Last updated at Posted at 2019-08-27

はじまり(ポエム)

私はRustのプログラムを愛用しているVisual Studio Codeで書いていた。

デバッグするかーとどうやってデバッグするか調べた。

Visual Studio CodeでRustのコード補完・タスク・Debug実行

なるほど、CodeLLDBというのがあるらしい。

私はCodeLLDBをポチッと導入し、設定を書き起動しようとした。

CodeLLDB requires Python 3.6(64bit), but looks like it is not installed on this machine

Python必要なの!?あれ、でもPython入れてなかったっけ・・・

python -V
Python 3.2.2

古すぎ!

はいはい、chocolateyで入れましょうね~

choco install python3 -y
python -V
Python 3.7.4

あれ、なんか3.7が降ってきた。まあ3.6って言ってたけど動くでしょ!

CodeLLDB requires Python 3.6(64bit), but looks like it is not installed on this machine

希望は打ち砕かれた。

got error : CodeLLDB requires Python 3.6(64bit), but looks like it is not installed on this machine · Issue #157 · vadimcn/vscode-lldb

I got the same error,
image

I have found a difference in registry. Python is registered under "HKEY_CURRENT_USER" but not under "HKEY_LOCAL_MACHINE" .

なるほど、レジストリ見てんのか。偽装してみるか。

ところがpython36.dllが見つからないとのたまってきた。

dll

なんでDLLの場所設定でいじれないの?
私はIssueを投げた。
Why does the python version is locked as 3.6 only for Windows? · Issue #205 · vadimcn/vscode-lldb

しかしそうはいっても始まらぬ。なんとかしてPython3.6を手に入れねばならぬ。

Python Releases for Windows | Python.org

3.6系統の最新リリースは・・・3.6.9か。リンクを踏んだ私に待ち受けていたのは・・・

Python Release Python 3.6.9 | Python.org

ソースコードしか配布されていないという現実だった

・・・これはビルドするしかない! 一つ前の3.6.8を使うという発想が何故かなかった私はビルドする道へ進んだ。最近はC++書いてなくてTypeScriptばっか書いてるけどVisual Studioくらい入ってるし余裕でしょ、そう思っていた。

開発者コマンドプロンプトで配布されているソースコードを展開したディレクトリの中のPCbuildに移動して

build.bat -p x64 -c Release

とし、ビルドした。なんかエラーが出たり型変換周りの(intvoid*にキャストして配列に格納しまたintにキャストして使うとかいうコードが原因、これ書いたやつ正気か?これだからC言語使い共は・・・)警告がどっさり出たが、とにかく終わった。

レジストリを偽装し、VSCodeの設定で"lldb.launch.env"のPATHを書いて動かした。

Fatal Python error: Py_Initialize: unable to load the file system codec
Import Error: No module named 'encodings' 

これなにか足りてないやつだ、そう悟った私はとりあえず眠り、リフレッシュした脳みそで本気で取り組むことにした。

本気でビルドする

ビルドの準備

改めてビルドの準備をしていく。

.NET 3.5

Windows10では.NET 3.5がデフォルトで無効になっている。
.NET Framework 3.5 を有効化する手順について ( Windows 10 ) | Ask CORE
に従って有効化する。

Visual Studio

2015以上であればよい。私はVisual Studio 2019を選んだ。C#とC++のコンパイルが普通にできれば十分だとは思うが、なんせ私の環境にはいろいろ入れているので最小構成がよくわからない。

MSVC v140 - VS2015 C++ ビルドツールとかも必要である可能性はある。

まあなんなら下にVS installerの構成ファイル置いておくので適宜いじって読み込ませてほしい。

https://gist.github.com/yumetodo/c48152a7512356db33bb2c0994610359

choclatey

必須というわけではないが、ないと説明が面倒くさいので。

https://chocolatey.org/install

にあるとおりに入れてほしい。

Mercurial

管理者権限のあるPowershellないしコマンドプロンプトで

choco install hg -y

Python

PythonをビルドするにはPythonが必要である。おおっと、鶏と卵の問題というかブートストラップ問題だ。

choco install python3 -y

sphinx

さっそくPythonについてくるpipの出番だ。

pip install Sphinx

Tcl

これがなんなのかわかっていないがとにかく必要らしい。なんとなくIDLEのためじゃないかという気がするが・・・。

ftp://ftp.tcl.tk/pub/tcl/tcl8_6/

からtcl-core8.6.6-src.tar.gzをダウンロードする。

HTML Help Workshop

Visual Studio 2017以降のインストーラーでは入れられないので自分で持ってくる必要がある。
Microsoft HTML Help Downloads | Microsoft Docs
Download Htmlhelp.exeをクリック。ダウンロードしたら実行してどんどん次に進んでいけば終わる。

Build

Download & 展開

Python Release Python 3.6.9 | Python.org

XZ compressed source tarballを落として展開する。

追加のファイル配置

その中にexternalsというディレクトリを作る。そこにtcl-core8.6.6-src.tar.gzを展開する。フォルダー名はtcl-core-8.6.6.0に。これをやらないと、下のようなエラーに見舞われる。

error

環境変数の設定

VSの開発者コマンドプロンプトを立ち上げる。以下の環境変数を設定する。

set PYTHON="C:\Python37\python.exe"

python2.7もしくは3.4以降のpython.exeのフルパス。
今回はchocolateyで入れているから"C:\Python37\python.exe"

set SPHINXBUILD="C:\Python37\Scripts\sphinx-build.exe"

where sphinx-buildすれば教えてくれるだろう。

set PATH="C:\Program Files\Mercurial\hg.exe";"C:\Program Files (x86)\HTML Help Workshop\hhc.exe";%PATH%

1つ目はhg.exeの場所。where hgすれば教えてくれるだろう
もう一つはhhc.exeの場所。デフォルトでは"C:\Program Files (x86)\HTML Help Workshop\hhc.exe"

ビルド

ビルドにはとても時間がかかる。PCを放置して別の作業をしたいが、PGOビルドをするときにネットワーク接続をしようとしてWindowsのファイアウォールから許諾画面が出てくる。ただまあビルドの最終盤で気がついて許可したけど多分間に合ってなかったろうし、やっぱり放置してもいい気がする。

ビルドコマンドは極めてシンプルだ。-oにはビルド成果物を置く場所を指定する。

cd Tools\msi
buildrelease.bat -x64 -o "C:\tmp\python"

最終的に

               Total    Copied   Skipped  Mismatch    FAILED    Extras
    Dirs :         1         0         1         0         0         0
   Files :        71        28        43         0         0         0
   Bytes :   96.69 m   49.61 m   47.08 m         0         0         0
   Times :   0:00:00   0:00:00                       0:00:00   0:00:00


   Speed :           481735111 Bytes/sec.
   Speed :           27565.104 MegaBytes/min.
   Ended : 2019年8月27日 17:26:31

のようなログが出て終わった。

install

先程-oで指定したディレクトリにamd64というディレクトリが作られているはずだ。python-3.6.9-amd64.exeがよくお見かけするpythonのインストーラーだ。

これを実行する。

CodeLLDBよ、動け

VSCodeの設定を

"lldb.launch.env": {
  "PATH": "C:\\Python36",
  "PYTHONPATH": "C:\\Python36\\Lib",
}

見直してリベンジだ。

image.png

動いた。

余談

大体同じ話が

に書いてあるのですが、せっかくなのでQiitaにもあげようとこの記事を書いたわけです。

追記

https://github.com/vadimcn/vscode-lldb/issues/205#issuecomment-557977394
vadimcn commented on 25 Nov 2019

As of v1.4.0, codelldb will use whatever Python 3 (>=3.3) you've got.

Python3系なら動くってことになったぽい。やったぜ。

13
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
8