NumPyの 「(X86_V2) but your machine doesn't support」への対応
Last updated on

NumPyの 「(X86_V2) but your machine doesn't support」への対応


事象

yfinanceの依存でNumPyが必要ぽかったので、requirements.txtに追加したところこのようなエラーが発生しました。

RuntimeError: NumPy was built with baseline optimizations:
(X86_V2) but your machine doesn't support:
(X86_V2).

先に対応方法

NumPyのバージョンを下げて対応します。

requirements.txt
numpy<2.4
yfinance

ちなみに黒子(Claude Code)さんに修正してもらったときは、<2.1になっていました。

requirements.txt
numpy<2.1

原因

メッセージにある通りで、実行している端末のCPUがX86_V2に未対応だったので、このエラーとなったようです。

古いPCで動かしてましたからね。(CPUはCore 2 Duo P8400)

NumPy 2.4.0のリリースノートにベースラインを引き上げたと記載がありました。

リリースは2025年12月20日だったようです。割とタイムリーな・・・

alt text

そもそもX86_V2ってなに

x86-64(AMD64)CPUの マイクロアーキテクチャ機能レベルを表す分類です。GCCなどのコンパイラやLinuxディストリビューションで、CPUがサポートする命令セットの世代を4段階に分けて定義しています。

レベル主な追加命令代表的なCPU
x86-64-v1基本的なx86-64命令(SSE, SSE2)Athlon 64, Pentium 4以降
x86-64-v2SSE3, SSSE3, SSE4.1, SSE4.2, POPCNTCore 第1世代(Nehalem)以降, 2008年頃〜
x86-64-v3AVX, AVX2, BMI1/2, FMACore 第4世代(Haswell)以降, 2013年頃〜
x86-64-v4AVX-512一部のサーバー向けCPU

NumPyのような数値計算ライブラリでは、SIMD命令(1つの命令で複数のデータを同時に処理する命令)を活用することで大幅な高速化が可能です。NumPy 2.4.0ではビルド時のベースラインがx86-64-v2に引き上げられたため、SSE4.2などに対応していないCPUでは動作しなくなりました。

今回のCore 2 Duo P8400は2008年製でSSE4.1までの対応なので、x86-64-v2の要件(SSE4.2, POPCNT)を満たせずエラーになったというわけですね。

最後に

さすがにPC古すぎか・・

古いThinkpadをおもちゃにしているのですが、この用途では無理がでてきそうです。

あとyfinanceって非公式APIを使っているんですね。

そもそもWebスクレイピングも禁止だったはずですし、J-Quants APIとかに乗り換えようと思います。