Pythonのセキュリティがどうのこうのというニュースを見た。
「ふむ、アップデートしとくか」と、いつもの気軽さでインストーラーを探しに行ったんだが、……
ない。
Python 3.12.10 was the last full bugfix release of Python 3.12 with binary installers.
(Python 3.12.10 は、バイナリインストーラーを備えた Python 3.12 の最後の完全なバグ修正リリースでした。)
LLMに(今回はGeminiさん)問い合わせてみたら、返ってきた答えはこうだ。
「ソースコードをダウンロードして、自分でコンパイルしてインストーラー作れ」
……は?
まるで「パンがなければケーキを食べればいいじゃない」と言われた気分だ。(いや、パンが欲しいんだが)
とりあえずやってみた
言われた通り、Pythonのソースコードをダウンロードし、Visual Studioをインストールし、いざビルドに挑戦。ちなみに、Windows環境でPythonをビルドするには、Visual Studio が必要になる。Community でも良い。
使用するのは、Pythonのソースコードに含まれるWindows用のビルドスクリプト、Tools\msi\buildrelease.bat
だ。今回は64ビット版(x64)が欲しかったので、x64 Native Tools Command Prompt for VS 2022 でこう叩いた。
Tools\msi\buildrelease.bat -x64
よし、これで後は待つだけ……かと思ったら、甘かった。
v143ビルドツールが見つからない問題
ビルドが途中で止まり、画面には「エラー」の文字。
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets(463,5): error MSB8020: v143 (プラットフォーム ツールセット = 'v143') のビルド ツールが見つかりません。v143 ビルド ツールを使用してビルドするには、v143 ビルド ツールをインストールしてください。または、[プロジェクト] メニューを選択するかソリューションを右クリックし [ソリューションの再ターゲット] を選択して、現在の Visual Studio Tools にアップグレードすることもできます
要するにビルドに必要なツールセットが見つからないという旨のメッセージが表示された。
VSは入れたはずだろ、と確認したが、入っている。必要なC++の開発環境も入っている。なのになぜだ?
何時間か沼にハマり、海外のフォーラムや、Pythonの開発者たちのディープな議論のログを漁りまくった結果、以下のページにたどり着いた。
解決:まさかの「ARM64/ARM64EC」ツール
今回の問題の解決策は、非常にシンプルなものだった。
私がビルドしようとしているのは、一般的なPC向けのx64版だ。これは間違いない。
しかし、このビルドプロセスでは、ARM64/ARM64EC向けのビルドツールが「ついでに」必要とされているらしい。
どうやら、buildrelease.bat
が、x64版のインストーラーを作る際、ARM64版のインストーラーの部品を生成しようとする過程があるらしく(またはそのチェックが走るらしく)、その際に専用のMSVC v143 - VS 2022 C++ ARM64/ARM64EC ビルド ツールが「ついで」に必須となるようだ。
解決策
というわけで、解決策は以下の通り。
前提条件
- 「Visual Studio Community 2022」がインストール済み
- C++ によるデスクトップ開発」にチェックを入れる
- 以下のオプションを追加
- 最新の v143 ビルドツール用 C++ MFC (x86 および x64)
- v143 ビルド ツール用 C++/CLI サポート (最新)
1. Visual Studio Installerの起動
まずは、Visual Studio Installerを起動し、インストール済みのVS(v143を使用している場合はVS 2022)の「変更」ボタンをクリックする。
2. 必要なコンポーネントの追加
「個別のコンポーネント」タブに移動し、以下のコンポーネントにチェックを入れてインストールする。
- MSVC v143 - VS 2022 C++ ARM64/ARM64EC ビルド ツール(最新)
3. ビルドの実行
必要なコンポーネントをインストールしたら、あとは x64 Native Tools Command Prompt for VS 2022 を立ち上げ、ソースコードを展開したディレクトリに移動して、スクリプトを実行するだけ。
# 展開したPythonのソースコードディレクトリに移動
cd C:\path\to\Python-3.12.12
Tools\msi\buildrelease.bat -x64
C:\path\to\Python-3.12.12\PCbuild\amd64\en-us にpython-3.12.12-amd64.exe が無事に出力された**。このインストーラーファイルを見つけた瞬間、「これだ!これが見たかったんだ!」と心の底から叫びそうになった。
まとめ
結局、公式インストーラーがないという事態から始まった今回の騒動でしたが、結果としてインストーラーを自力で作り出すという、新しい知識を獲得することができました。
「パンがなければケーキを焼く」ことになった結果、ビルド環境設定というトラブルに直面しました。しかし、インターネット上には同じ問題で躓き、その解決策を共有してくれている先人たちの知見が存在し、それを辿ることで乗り越えることができました。
今回の経験から得られた最も重要な教訓は、以下の点に集約されます。
問題は必ず誰かが解決している:一見不可能なエラーでも、深く調べれば必ず解決策(今回はGitHub Issue)が存在する。
ただPythonを利用するだけでなく、その実行ファイルをどのように構築するかという、より深い層の知識を得られたことは大きな収穫です。これでもう、インストーラーがないからと焦る必要はありません。私たちは、ソースコードからそれを生み出す力を手に入れたのですから。