fugashi
fugashi copied to clipboard
DLL load failed: 指定されたモジュールが見つかりません。[windows]
この記事のgoogle colabのコードをダウンロードしてjupyter notebookで動かそうとしています。 https://qiita.com/sonoisa/items/1df94d0a98cd4f209051 (google colabでは問題なく動くことを確認しました。)
下記でインストールをしました。 pip install fugashi[unidic] python -m unidic download
しかし、下記のエラーが起きてfugashiが使えないようです。
使用している環境は下記です。 windows10 pro python 3.7.8 fugashi 1.1.1
どうすればいいか教えていただけないでしょうか?
エラー内容
ImportError Traceback (most recent call last)
<ipython-input-2-5dae7eb78200> in <module>
----> 1 model = SentenceBertJapanese("sonoisa/sentence-bert-base-ja-mean-tokens")
<ipython-input-1-1cb8424fffdf> in __init__(self, model_name_or_path, device)
4 class SentenceBertJapanese:
5 def __init__(self, model_name_or_path, device=None):
----> 6 self.tokenizer = BertJapaneseTokenizer.from_pretrained(model_name_or_path)
7 self.model = BertModel.from_pretrained(model_name_or_path)
8 self.model.eval()
~\AppData\Roaming\Python\Python37\site-packages\transformers\tokenization_utils_base.py in from_pretrained(cls, pretrained_model_name_or_path, *init_inputs, **kwargs)
1718
1719 return cls._from_pretrained(
-> 1720 resolved_vocab_files, pretrained_model_name_or_path, init_configuration, *init_inputs, **kwargs
1721 )
1722
~\AppData\Roaming\Python\Python37\site-packages\transformers\tokenization_utils_base.py in _from_pretrained(cls, resolved_vocab_files, pretrained_model_name_or_path, init_configuration, *init_inputs, **kwargs)
1789 # Instantiate tokenizer.
1790 try:
-> 1791 tokenizer = cls(*init_inputs, **init_kwargs)
1792 except OSError:
1793 raise OSError(
~\AppData\Roaming\Python\Python37\site-packages\transformers\models\bert_japanese\tokenization_bert_japanese.py in __init__(self, vocab_file, do_lower_case, do_word_tokenize, do_subword_tokenize, word_tokenizer_type, subword_tokenizer_type, never_split, unk_token, sep_token, pad_token, cls_token, mask_token, mecab_kwargs, **kwargs)
150 elif word_tokenizer_type == "mecab":
151 self.word_tokenizer = MecabTokenizer(
--> 152 do_lower_case=do_lower_case, never_split=never_split, **(mecab_kwargs or {})
153 )
154 else:
~\AppData\Roaming\Python\Python37\site-packages\transformers\models\bert_japanese\tokenization_bert_japanese.py in __init__(self, do_lower_case, never_split, normalize_text, mecab_dic, mecab_option)
229
230 try:
--> 231 import fugashi
232 except ModuleNotFoundError as error:
233 raise error.__class__(
~\AppData\Roaming\Python\Python37\site-packages\fugashi\__init__.py in <module>
----> 1 from .fugashi import *
2
ImportError: DLL load failed: 指定されたモジュールが見つかりません。
intallしたfugashiのフォルダの中身は下記のようになっています。
#33 と同じ問題みたいです。以上のフォルダーに libmecab.dll
というファイルはインストールされるはずですがなぜか付いていません。今自分の Windows PC で確認してみたんですが、再インストールしてもDLLは普通に入っています。
根本的な解決策ではありませんが、wheel をここから直接ダウンロードして、その中から DLL を拾って以上のフォルダに置くと動くはずです。それでもし解決できなかったら教えてください。
後、解決できたらこれは無視して良いですが、原因究明のため、下記を教えていただけたら助かります。
- Pythonはどうやってインストールしましたか?もしかしてWindows Store経由だったんですか?
- 一旦
pip uninstall fugashi
してからpip install -vvv fugashi
を実行すると出力はどうなりますか。 - virtualenvを使うと普通にインストールできますか。
- pip uninstall fugashi してから pip install -vvv fugashi を実行するとこのような出力になりました。(https://github.com/polm/fugashi/files/7402092/output.txt)
- 大分前にインストールしたので記憶が定かではありませんが、PythonはVS code経由でインストールしたと思います。 (https://www.python.jp/python_vscode/windows/setup/install_vscode.html) C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64 にpython.exeやScriptsがあって、 c:\users\999999\appdata\roaming\python\python37\site-packages にfugashiがインストールされています。
libmecab.dllを入れたら解決しました。ありがとうございます。
- virtualvenvではないですが、ご参考までに。 丁度python3.9に乗り換えようと思っていたので、pythonの公式サイトからインストールしたpython3.9で pip install fugashi[unidic] python -m unidic download でインストールしたらpython 3.9の方では問題なく動き、libmecab.dllもインストールされていました。
pythonのインストール方法が影響しているかもしれません。
解決できて良かったです。他の情報ありがとうございます、大変参考になります。
pipの開発者に問い合わせたところ、fugashi の setup.py での DLL のパスの指定方法が間違っているみたいですが、正しい指定方法やなぜ効く場合と効かない場合があるかは不明のままです。なので修正方法はあるはずですが、修正できるまで少し時間がかかりそうです。
こちら、Python 3.9 + Windowsで同じ問題に遭遇しました。
どうやら、 libmecab.dll
が ~/AppData/Roaming/Python/lib/site-packages/fugashi/
にインストールされてしまっているようでした。
インストール先の問題なのか、DLL検索パスの問題かどうかわかりませんが、その場しのぎとしては cp -f ~/appdata/Roaming/Python/lib/site-packages/fugashi/libmecab.dll ~/appdata/Roaming/Python/Python39/site-packages/fugashi/
で解決しました。
ご報告ありがとうございます!dllのコピーで解決できて良かったです。
残念ですがこの件の根本的な解決についてまだ進歩はありません。
私も同じ問題が発生し、原因が見つかったようです。
pipコマンドでインストールすると、無効なファイル パスでインストールされます。
lib/site-packagesフォルダをpython311/site-packagesに移動して解決しました。
とにかくあなたの作品は素晴らしいです。 応援します。
この問題の原因について未だに厳密な原因は把握していませんが、今までのケースでvirtualenv
の使用で解決できることは確かのようなので、とりあえずこのissueをcloseします。