【悩み】
・Pythonのプログラムを実行したけど異常終了して動かない。
・RuntimeError: Numpy is not availableというエラーが出力されたけど何?
・RuntimeError: Numpy is not availableの原因と解消方法を知りたい。
こういった「悩み」に答えます。
【本記事の内容】
① RuntimeError: Numpy is not availableの発生経緯
➁ RuntimeError: Numpy is not availableの発生原因
➂ RuntimeError: Numpy is not availableの解決方法
本記事を実践したことで、5分くらいで「RuntimeError: Numpy is not available」のエラーを解決できました。
記事の前半では「本エラーの発生経緯」を解説します。
記事の後半では「本エラーの発生原因」から「解決方法」までを紹介します。
この記事を読み終えることで、「エラーで動かないPythonプログラムを解消でき、正常に動く状態」になるはずです。
RuntimeError: Numpy is not availableの発生経緯
「RuntimeError: Numpy is not availableの発生経緯」に関して解説します。
本事象が発生した当時は、「Ubuntuでは同じプログラムが正常終了するのに、なぜWindowsでは正常終了しないの?」と慌てふためいた記憶があります。
筆者は、以下のようなPythonプログラムをWindows上で実行しようと考えていました。
import spacy
import ginza
nlp = spacy.load('ja_ginza')
doc = nlp('ここは公園です。')
# 文節ごとに分割
for sent in doc.sents:
for span in ginza.bunsetu_spans(sent):
print(span)
上記プログラムを「test.py」というファイル名で保存します。
保存したファイルを実行するために、以下のコマンドを実行したところ、「RuntimeError: Numpy is not available」が発生しました。
python test.py
C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\thinc\shims\pytorch_grad_scaler.py:58: UserWarning: Failed to initialize NumPy: module compiled against API version 0x10 but this version of numpy is 0xe (Triggered internally at ..\torch\csrc\utils\tensor_numpy.cpp:77.)
self._found_inf = torch.full((1,), 0.0)
Traceback (most recent call last):
File "C:\Users\user\Dropbox\設定方法\2ch5ch\program\src\collect\get-2ch5ch.py", line 114, in <module>
koyumeishi_dict = extract_koyumeishi_and_aggr(message_dict)
File "C:\Users\user\Dropbox\設定方法\2ch5ch\program\src\collect\get-2ch5ch.py", line 21, in extract_koyumeishi_and_aggr
doc = nlp(message_text)
File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\spacy\language.py", line 1022, in __call__
error_handler(name, proc, [doc], e)
File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\spacy\util.py", line 1617, in raise_error
raise e
File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\spacy\language.py", line 1017, in __call__
doc = proc(doc, **component_cfg.get(name, {})) # type: ignore[call-arg]
File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\spacy_transformers\pipeline_component.py", line 192, in __call__
outputs = self.predict([doc])
File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\spacy_transformers\pipeline_component.py", line 228, in predict
activations = self.model.predict(docs)
File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\thinc\model.py", line 315, in predict
return self._func(self, X, is_train=False)[0]
File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\spacy_transformers\layers\transformer_model.py", line 185, in forward
model_output, bp_tensors = transformer(wordpieces, is_train)
File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\thinc\model.py", line 291, in __call__
return self._func(self, X, is_train=is_train)
File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\thinc\layers\pytorchwrapper.py", line 133, in forward
Xtorch, get_dX = convert_inputs(model, X, is_train)
File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\spacy_transformers\layers\transformer_model.py", line 214, in _convert_transformer_inputs
"input_ids": xp2torch(wps.input_ids).long().to(device=hf_device),
File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\thinc\util.py", line 364, in xp2torch
torch_tensor = torch.from_numpy(xp_tensor)
RuntimeError: Numpy is not available
本事象は、以下の日時と環境で発生しました。
動作確認済み日時:2022年12月27日
動作確認済み環境:Windows 11 pro
以上が、「RuntimeError: Numpy is not availableの発生経緯」となります。
RuntimeError: Numpy is not availableの発生原因
本事象の「発生原因」に関して解説します。
発生原因は、「お使いの環境に導入されているNumpyのバージョンとあるライブラリが期待するNumpyのバージョンが不一致だから」です。
本事象の詳しい発生原因を以下に掲載します。
【発生原因】
エラーの意味:
「Numpyライブラリを使うことができません」です。
エラー箇所:
doc = nlp()部分でNumpyを使うが使うことができないためエラーが発生
原因:
プログラム実行時に以下の警告文が出力されています。
UserWarning: Failed to initialize NumPy: module compiled against API
version 0x10 but this version of numpy is 0xe (Triggered internally
上の警告からNumpyのバージョン不整合でエラー発生と考えられます。
以上が、「RuntimeError: Numpy is not availableの発生原因」となります。
最後に出力されるエラーだけでなく、たびたび出力される警告文を確認することで本エラーを瞬時に理解することができます。
RuntimeError: Numpy is not availableの解決方法
本エラーの解決方法に関してご紹介します。
Numpyのバージョンを「上げる」もしくは「下げる」ことで本エラーを解決できます。
今回、プログラム内で使ったライブラリでは、「0xeのNumpy」が必要でした。しかし、環境内には「0x10のNumpy」がインストールされていました。
よって、以下のコマンドを実行し、Numpyをアップグレードすることで本事象を解消できます。
・アップグレードが必要な場合
pip install numpy --upgrade
・ダウングレードが必要な場合
pip uninstall numpy
pip install numpy==バージョン
以上のようにして、本事象を解消することができました。
【まとめ】RuntimeError: Numpy is not availableのエラー
いかがでしたでしょうか?
上記で紹介した「Numpyのバージョンをそろえる」ことで、「RuntimeError: Numpy is not availableのエラー」を解消できます。
最後にもう一度内容を確認しましょう。
【RuntimeError: Numpy is not availableのエラーの原因と解決方法】
・原因
Numpyのバージョンが不一致であるため
・解決方法は2つ
1つ目:Numpyのバージョンをアップグレードする
2つ目:Numpyのバージョンをダウングレードする
本ブログでは、「業務の時短化に繋がるIT技術」や「クラウドやOSSの学び方」などを発信しています。定期的に更新していますので、ぜひブックマークをよろしくお願いいたします。
コメント