Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DLL load failed: 指定されたモジュールが見つかりません。[windows] #42

Closed
KENJI-JIN opened this issue Oct 21, 2021 · 10 comments
Labels
windows Windows support related issues.

Comments

@KENJI-JIN
Copy link

KENJI-JIN commented Oct 21, 2021

この記事の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: 指定されたモジュールが見つかりません。
@KENJI-JIN
Copy link
Author

intallしたfugashiのフォルダの中身は下記のようになっています。
image

@polm polm added the windows Windows support related issues. label Oct 22, 2021
@polm
Copy link
Owner

polm commented Oct 22, 2021

#33 と同じ問題みたいです。以上のフォルダーに libmecab.dll というファイルはインストールされるはずですがなぜか付いていません。今自分の Windows PC で確認してみたんですが、再インストールしてもDLLは普通に入っています。

根本的な解決策ではありませんが、wheel をここから直接ダウンロードして、その中から DLL を拾って以上のフォルダに置くと動くはずです。それでもし解決できなかったら教えてください。

後、解決できたらこれは無視して良いですが、原因究明のため、下記を教えていただけたら助かります。

  1. Pythonはどうやってインストールしましたか?もしかしてWindows Store経由だったんですか?
  2. 一旦 pip uninstall fugashi してから pip install -vvv fugashi を実行すると出力はどうなりますか。
  3. virtualenvを使うと普通にインストールできますか。

@KENJI-JIN
Copy link
Author

  1. pip uninstall fugashi してから pip install -vvv fugashi を実行するとこのような出力になりました。(https://github.com/polm/fugashi/files/7402092/output.txt)

@KENJI-JIN
Copy link
Author

KENJI-JIN commented Oct 23, 2021

  1. 大分前にインストールしたので記憶が定かではありませんが、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がインストールされています。

@KENJI-JIN
Copy link
Author

KENJI-JIN commented Oct 23, 2021

libmecab.dllを入れたら解決しました。ありがとうございます。

  1. virtualvenvではないですが、ご参考までに。
    丁度python3.9に乗り換えようと思っていたので、pythonの公式サイトからインストールしたpython3.9で
    pip install fugashi[unidic]
    python -m unidic download
    でインストールしたらpython 3.9の方では問題なく動き、libmecab.dllもインストールされていました。

pythonのインストール方法が影響しているかもしれません。

@polm
Copy link
Owner

polm commented Oct 25, 2021

解決できて良かったです。他の情報ありがとうございます、大変参考になります。

pipの開発者に問い合わせたところ、fugashi の setup.py での DLL のパスの指定方法が間違っているみたいですが、正しい指定方法やなぜ効く場合と効かない場合があるかは不明のままです。なので修正方法はあるはずですが、修正できるまで少し時間がかかりそうです。

@t-yuki
Copy link

t-yuki commented May 18, 2022

こちら、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/ で解決しました。

@polm
Copy link
Owner

polm commented May 19, 2022

ご報告ありがとうございます!dllのコピーで解決できて良かったです。

残念ですがこの件の根本的な解決についてまだ進歩はありません。

@gembleman
Copy link

私も同じ問題が発生し、原因が見つかったようです。
pU0n0Io2Q9
pipコマンドでインストールすると、無効なファイル パスでインストールされます。
lib/site-packagesフォルダをpython311/site-packagesに移動して解決しました。
とにかくあなたの作品は素晴らしいです。 応援します。

@polm
Copy link
Owner

polm commented Aug 3, 2023

この問題の原因について未だに厳密な原因は把握していませんが、今までのケースでvirtualenvの使用で解決できることは確かのようなので、とりあえずこのissueをcloseします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
windows Windows support related issues.
Projects
None yet
Development

No branches or pull requests

4 participants