ARM64_Lab

pip install が ARM64 Windows で通るか、主要20パッケージを実際に試した

この記事の見出し
  1. 試し方
  2. 結果
  3. cryptography と psutil の tag が違う
  4. polars だけ挙動が読めなかった
  5. 詰まるとしたらどこか
  6. いつまで有効な情報か

numpy 2.5.1 も pandas 3.0.5 も scipy 1.18.0 も、ARM64 版 Windows の Python 3.12 でそのまま入る。2026年8月2日に手元で確かめた結果だ。

ARM64 機を仕事で使うか迷っている人が一番気にするのが、たぶんこの点だと思う。C 拡張を含む Python パッケージは、対応する wheel が配布されていないとビルドから始まる。Visual Studio のビルドツールを入れて、失敗して、諦める。あの流れをもう一度やりたい人はいない。

試し方

インストールはせず、pip download でプラットフォームを固定して wheel の有無だけを見た。環境を汚さずに済む。

pip download <パッケージ名> --no-deps --only-binary=:all: `
    --platform win_arm64 --python-version 312 -d .\wh

--only-binary=:all: を付けているので、ソース配布しかない場合はここで落ちる。つまり「落ちた=ARM64 用のバイナリが無い」と読める。

pip は 25.0.1、Python は 3.12.10。どちらも Python312-arm64 配下のネイティブ版だ。

結果

20本のうち18本が取得できた。

パッケージ 取得したファイル
numpy numpy-2.5.1-cp312-cp312-win_arm64.whl
pandas pandas-3.0.5-cp312-cp312-win_arm64.whl
scipy scipy-1.18.0-cp312-cp312-win_arm64.whl
pillow pillow-12.3.0-cp312-cp312-win_arm64.whl
lxml lxml-6.1.1-cp312-cp312-win_arm64.whl
cryptography cryptography-46.0.3-cp311-abi3-win_arm64.whl
psutil psutil-7.2.2-cp37-abi3-win_arm64.whl
matplotlib matplotlib-3.11.1-cp312-cp312-win_arm64.whl
aiohttp aiohttp-3.14.3-cp312-cp312-win_arm64.whl
duckdb duckdb-1.5.5-cp312-cp312-win_arm64.whl
orjson orjson-3.11.9-cp312-cp312-win_arm64.whl
regex regex-2026.7.19-cp312-cp312-win_arm64.whl

残りは greenlet 3.5.4、cffi 2.1.0、msgpack 1.2.1、ujson 5.13.0、pyyaml 6.0.3。どれも win_arm64 タグ付きで降ってきた。20本のうち18本、割合にすると9割が素通りしている。

落ちたのは2本。

ERROR: No matching distribution found for tiktoken

pyarrow も同じ文言で止まった。数秒で諦めてくれるので、長く待たされることはない。

cryptography と psutil の tag が違う

細かい話だが、拾ったファイル名をよく見ると2つだけ形が違う。

cryptography は cp311-abi3、psutil は cp37-abi3 になっている。安定 ABI 向けにビルドされた wheel で、Python 3.11 以降なら1つのファイルで通る作りだ。Python を 3.13 に上げても、この2つは同じファイルが使い回される。

Python のマイナーバージョンを上げたときに何が壊れるかを予測するとき、この tag は見ておく価値がある。

polars だけ挙動が読めなかった

polars は取得に成功したのだが、降ってきたのが polars-1.43.2-py3-none-any.whl だった。

py3-none-any はプラットフォーム非依存を意味する。Rust で書かれたライブラリなのに、なぜバイナリ抜きの wheel が win_arm64 向けに解決されたのか、正直まだ分かっていない。中身を展開して確認するところまではやっていないので、ここは未確認のまま残しておく。実際に import して動くかは別途試す。

詰まるとしたらどこか

tiktoken が入らないのは、手元では地味に効いた。トークン数を数える処理を書こうとして、そこで止まった。

回避策としては、HTTP 経由で数えるか、別実装に置き換えるか、x64 の Python を並行して入れてそちらで動かすか。3つ目は環境が二重になるので選ばなかった。

pyarrow が無いのは、pandas の一部機能と、Parquet を直接読む処理に効く。ここは今のところ回避できていない。Parquet を扱う必要が出たら別の手段を探すことになるが、手元ではまだその場面に当たっていないので未解決のまま置いてある。

念のため書いておくと、ここで確認したのは「wheel が配布されているか」だけだ。実際にインストールしてあるかは別の話で、手元の環境に入っているのは numpy 2.4.1、pandas 3.0.0rc2、Pillow 12.1.0、lxml 6.0.2、matplotlib 3.10.8 の5本。duckdb と polars と scipy は wheel が取得できることを確認しただけで、導入はしていない。

いつまで有効な情報か

wheel の配布状況は日単位で変わる。2026年8月2日時点の結果として読んでほしい。同じコマンドをコピーして自分の環境で叩けば、その日の答えが2分ほどで出る。

pip 自体からは 26.2 が出ているという通知が毎回表示された。バージョンを上げると解決の挙動が変わる可能性があるので、比べるときは pip のバージョンも揃えたほうがいい。手元では2026年6月に一度 pip を上げてから numpy の解決が変わった経験があるので、ここは慎重にしている。

なお今回試したのは「wheel が存在するか」だけで、「入れて動くか」は別の話になる。18本すべてを import して走らせたわけではない。手元に実際に入っているのは numpy と pandas と Pillow と lxml と matplotlib の5本で、いずれも import して問題は出ていない。残りは未確認のまま置いてある。

a
arm64lab — 個人運営

Surface Pro 11th Edition(Snapdragon X Elite)を2025年5月から常用機にしている個人の記録です。ARM64 版 Windows で詰まったところと、その場で測った値をそのまま書き残しています。特定の企業・団体とは関係がなく、いかなる組織を代表する見解でもありません。