0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windows用Pythonインストーラ作成で嵌まった

Posted at

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 ビルド ツール(最新)

image.png

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を利用するだけでなく、その実行ファイルをどのように構築するかという、より深い層の知識を得られたことは大きな収穫です。これでもう、インストーラーがないからと焦る必要はありません。私たちは、ソースコードからそれを生み出す力を手に入れたのですから。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?