前提・実現したいこと
python3でMeCabを使用したく、
MeCabのインストール後、PATHを通して
実行しましたが、importできないようです。
いろいろ調べましたが対処方法がわかりません。
pythonは素人ですので、どなたかご教示いただけると助かります。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "c:/MAMP/htdocs/test.py", line 29, in <module> wordcloud() File "c:/MAMP/htdocs/test.py", line 24, in wordcloud import MeCab File "C:\Users\WK07AD\Anaconda3\lib\site-packages\MeCab\__init__.py", line 10, in <module> from . import _MeCab ImportError: DLL load failed while importing _MeCab: 指定されたモジュールが見つかりません。
該当のソースコード
python
1 import MeCab 2 3 t = MeCab.Tagger('mecabrc') # -O chasen, -O wakati, -O yomi, mecabrc 4 print(t.parse("pythonが大好きです"))
試したこと
MeCabの環境変数「PATH」に追加
コマンドプロンプトで「mecab」を入力し、PATHが通っていることは確認済みです。
MeCabのlibmecab.dllを該当しそうなフォルダーにコピー
・・・・Anaconda3\Lib\site-packages など
pip install mecabを実行し、問題なくインストールできました。
補足情報(FW/ツールのバージョンなど)
OS Windows10
Pythonバージョン 3.8(64bit)
MeCab 0.996 64bit version
> MeCabのlibmecab.dllを
元々どこにあったファイルでしょうか、というのがちょっと気になりました
python が複数入っていたりしませんか?
anaconda 環境のpython とそれ以外のPython とか。
複数入っている場合は、それぞれ別物になるので、インストールしたモジュールはインストールしたpython でしか使えません。
libmecab.dllは、C:\Program Files\MeCab\binにありました。
以下を参考にしました。
https://ryoz001.com/1196.html
pythonはanaconda環境のものを使用しています。
作業しているディレクトリーでpip installしており、
確認のため再度installを実行すると
PS C:\MAMP\htdocs> pip install mecab
Requirement already satisfied: mecab in c:\programdata\anaconda3\lib\site-packages (0.996.3)
と表示され、モジュールはインストールできているようです。
情報はこの欄ではなくて質問を編集して、そちらに書いてください。
質問には pip install mecab を実行したと書いてありますが、参考にしたというページでは mecab-python-windows を入れると書いてあります。
mecab-python-windows ではPython3.8用のバイナリ(whl)は提供されていません。 https://pypi.org/project/mecab-python-windows/#files
実際に出ているエラーは mecab のディレクトリ構成ではありません。
したがって、質問に「やったこと」がすべて書かれていない(もしくは質問者さんがやったことを全部記録していない)と思われます。
pip list を実行して、mecabで始まるライブラリを探して質問に追記してください。複数個入っているんじゃないでしょうか。
(推測: mecab と mecab-python3 が一緒に入っていて、MeCab\libmecab.dll を複数あるのがまずいのかもとか思って自分で削除した、とかでは)
> pip install mecabを実行
https://qiita.com/yukinoi/items/990b6933d9f21ba0fb43
の手順でインストールしたのですね
> DLL load failed while importing _MeCab: 指定されたモジュールが見つかりません。
「pip install mecab」を実行した時と同じ状態で、
pip show mecab
を実行して、「Location:」で始まる行に表示されてるパスを調べてください
そこに、「_MeCab.cp数字-win_amd64.pyd」というファイル名のファイルはありますか?
(「数字」は、質問者さんがお使いのPythonのバージョンからピリオドを除いたものです)
> libmecab.dllは、C:\Program Files\MeCab\binにありました。
の「C:\Program Files\MeCab\bin」は、
> MeCabの環境変数「PATH」に追加
コマンドプロンプトで「mecab」を入力し、PATHが通っていることは確認済みです。
で環境変数Pathに追加したパスと同じものですか?
もし同じなら、「libmecab.dll」をコピーする必要はありません
質問に書かれてるエラーの
> File "C:\Users\WK07AD\Anaconda3\lib\site-packages\MeCab\__init__.py", line 10, in <module>
と、
> PS C:\MAMP\htdocs> pip install mecab
Requirement already satisfied: mecab in c:\programdata\anaconda3\lib\site-packages (0.996.3)
のパスが違う
mecabが2ヵ所に入ってる??
「_MeCab.cp数字-win_amd64.pyd」があるかは、下記を両方とも調べてください
C:\Users\WK07AD\Anaconda3\lib\site-packages
c:\programdata\anaconda3\lib\site-packages
pip listは以下になります。
Package Version
---------------------------------- -----------------
alabaster 0.7.12
anaconda-client 1.7.2
anaconda-navigator 1.10.0
anaconda-project 0.8.3
argh 0.26.2
argon2-cffi 20.1.0
asn1crypto 1.4.0
autopep8 1.5.4
Babel 2.8.1
beautifulsoup4 4.9.3
bleach 3.2.1
bokeh 2.2.3
Bottleneck 1.3.2
click 7.1.2
contextlib2 0.6.0.post1
cryptography 3.1.1
cycler 0.10.0
decorator 4.4.2
diff-match-patch 20200713
distributed 2.30.1
flake8 3.8.4
Flask 1.1.2
future 0.18.2
glob2 0.7
google-auth-httplib2 0.1.0
h5py 2.10.0
html5lib 1.1
httplib2 0.19.1
Janome 0.4.1
Jinja2 2.11.2
json5 0.9.5
keyring 21.4.0
lazy-object-proxy 1.4.3
locket 0.2.0
lxml 4.6.1
MarkupSafe 1.1.1
matplotlib 3.3.2
mccabe 0.6.1
mecab 0.996.3
menuinst 1.4.16
mistune 0.8.4
mkl-fft 1.2.0
mkl-random 1.1.1
mkl-service 2.3.0
mock 4.0.2
more-itertools 8.6.0
mpmath 1.1.0
msgpack 1.0.0
multipledispatch 0.6.0
mysql-connector-python 8.0.25
navigator-updater 0.2.1
nbclient 0.5.1
nbconvert 6.0.7
nbformat 5.0.8
nest-asyncio 1.4.2
networkx 2.5
nltk 3.5
nose 1.3.7
notebook 6.1.4
numba 0.51.2
numexpr 2.7.1
numpy 1.19.2
numpydoc 1.1.0
oauth2client 4.1.3
oauthlib 3.1.0
olefile 0.46
opencv-contrib-python 4.5.2.52
opencv-python 4.5.2.52
openpyxl 3.0.5
packaging 20.4
pandas 1.1.3
pandocfilters 1.4.3
paramiko 2.7.2
parso 0.7.0
partd 1.1.0
path 15.0.0
pathlib2 2.3.5
pathtools 0.1.2
patsy 0.5.1
pep8 1.7.1
pexpect 4.8.0
pickleshare 0.7.5
Pillow 8.0.1
pip 21.1.3
pkginfo 1.6.1
pluggy 0.13.1
ply 3.11
prometheus-client 0.8.0
prompt-toolkit 3.0.8
protobuf 3.17.3
psutil 5.7.2
py 1.9.0
pyasn1 0.4.8
pyasn1-modules 0.2.8
pycodestyle 2.6.0
pycosat 0.6.3
pycparser 2.20
pycurl 7.43.0.6
pydocstyle 5.1.1
pyflakes 2.2.0
Pygments 2.7.2
pylint 2.6.0
PyNaCl 1.4.0
pyodbc 4.0.0-unsupported
pyOpenSSL 19.1.0
pyparsing 2.4.7
pyreadline 2.1
pyrsistent 0.17.3
PySocks 1.7.1
pytest 0.0.0
python-dateutil 2.8.1
python-jsonrpc-server 0.4.0
python-language-server 0.35.1
pytz 2020.1
PyWavelets 1.1.1
pywin32 227
pywin32-ctypes 0.2.0
pywinpty 0.5.7
PyYAML 5.3.1
pyzmq 19.0.2
QDarkStyle 2.8.1
QtAwesome 1.0.1
qtconsole 4.7.7
QtPy 1.9.0
regex 2020.10.15
requests 2.24.0
requests-oauthlib 1.3.0
rope 0.18.0
rsa 4.7.2
Rtree 0.9.4
ruamel-yaml 0.15.87
schedule 1.1.0
scikit-image 0.17.2
scikit-learn 0.23.2
scipy 1.5.2
seaborn 0.11.0
Send2Trash 1.5.0
setuptools 57.4.0
simplegeneric 0.8.1
singledispatch 3.4.0.3
sip 4.19.13
six 1.15.0
snowballstemmer 2.0.0
sortedcollections 1.2.1
sortedcontainers 2.2.2
soupsieve 2.0.1
Sphinx 3.2.1
sphinxcontrib-applehelp 1.0.2
sphinxcontrib-devhelp 1.0.2
sphinxcontrib-htmlhelp 1.0.3
sphinxcontrib-jsmath 1.0.1
sphinxcontrib-qthelp 1.0.3
sphinxcontrib-serializinghtml 1.1.4
sphinxcontrib-websupport 1.2.4
spyder 4.1.5
spyder-kernels 1.9.4
SQLAlchemy 1.3.20
statsmodels 0.12.0
sympy 1.6.2
tables 3.6.1
tblib 1.7.0
terminado 0.9.1
testpath 0.4.4
threadpoolctl 2.1.0
tifffile 2020.10.1
toml 0.10.1
toolz 0.11.1
tornado 6.0.4
tqdm 4.50.2
tra
pip show mecabを実行してみました。
PS C:\MAMP\htdocs> pip show mecab
Name: mecab
Version: 0.996.3
Summary: MeCab binding for many OSs (Windows, macOS, and Linux)
Home-page: https://github.com/ikegami-yukino/mecab/tree/master/mecab/python
Author: Yukino Ikegami
Author-email: yknikgm@gmail.com
License: BSD, GPL or LGPL
Location: c:\programdata\anaconda3\lib\site-packages
Requires:
Required-by:
環境変数Pathに追加したパスと同じものです。
「libmecab.dll」をコピーする必要はないんですね。。。
ご教示ありがとうございます。
そもそも pip install mecab で libmecab.dll が入ったはずですよ。
いまのところ site-packages\MeCab\ が作られていることが謎ですね……
上にも書きましたけど、mecabが入ってる「site-packages」が2ヵ所あるようです
C:\Users\WK07AD\Anaconda3\lib\site-packages
と、
c:\programdata\anaconda3\lib\site-packages
詳細分かりませんが、必要なDLLが片方にしか入ってなくて、PythonはDLLが入ってない側のmecabを使おうとしてる、とか
エラーに以下の内容がありました。
File "C:\Users\WK07AD\Anaconda3\lib\site-packages\MeCab\__init__.py", line 10, in <module>
from . import _MeCab
ImportError: DLL load failed while importing _MeCab: 指定されたモジュールが見つかりません。
__init__.pyのファイルに問題があるのでしょうか?
そのファイルの中を確認すると
from . import _MeCabがあります。
この記述は問題ないものでしょうか?
少し気になったので追記させていただきました。
当方のWin 10, Python 3.7環境にも同じ手順でmecabを入れてるので、調べました
「site-packages」には、mecabで始まるものは下記の二つしかなく、「MeCab」というディレクトリはありませんでした
mecab-0.996.3.dist-info (ディレクトリ)
MeCab.py (ファイル)
おそらく、質問者さんの「c:\programdata\anaconda3\lib\site-packages」の方は、当方と同じ状態だと思います
(エラーから推定して)Pythonが使おうとしている「C:\Users\WK07AD\Anaconda3\lib\site-packages」に入ってるmecabは、別物なのではないですかね
以前にpythonなどを入れなおしたこともあり、一度その時にもmecabをインストールしたかもしれません。(記憶が定かではないのですが。。。)
一度どちらも一度削除して入れなおす方が良いのでしょうか?
Pythonで「import MeCab」がエラーが出る状態で、下記のコードを実行してみてください
import sys
import pprint
pprint.pprint(sys.path)
そうしたらパスがたくさん表示されますけど、その中から「site-packages」が付くものを探して、そのパスを教えてください
(複数あれば全部)
下記それぞれのパスに「python.exe」がないか、調べてください
C:\Users\WK07AD\Anaconda3
c:\programdata\anaconda3
もしあれば、それぞれを下記のようにして絶対パスで実行して、その結果表示を教えてください
(実行するのは、実際に存在しているものだけです)
C:\Users\WK07AD\Anaconda3\python.exe -V
c:\programdata\anaconda3\python.exe -V
import sys
import pprint
pprint.pprint(sys.path)
を実行しました。
['c:\\MAMP\\htdocs',
'C:\\Users\\WK07AD\\Anaconda3\\python38.zip',
'C:\\Users\\WK07AD\\Anaconda3\\DLLs',
'C:\\Users\\WK07AD\\Anaconda3\\lib',
'C:\\Users\\WK07AD\\Anaconda3',
'C:\\Users\\WK07AD\\Anaconda3\\lib\\site-packages',
'C:\\Users\\WK07AD\\Anaconda3\\lib\\site-packages\\win32',
'C:\\Users\\WK07AD\\Anaconda3\\lib\\site-packages\\win32\\lib',
'C:\\Users\\WK07AD\\Anaconda3\\lib\\site-packages\\Pythonwin']
Traceback (most recent call last):
File "c:/MAMP/htdocs/test.py", line 45, in <module>
wordcloud()
File "c:/MAMP/htdocs/test.py", line 40, in wordcloud
import MeCab
ModuleNotFoundError: No module named 'MeCab'
C:\Users\WK07AD\Anaconda3\python.exe
がありましたので実行しました。
------
PS C:\MAMP\htdocs> C:\Users\WK07AD\Anaconda3\python.exe
Python 3.8.5 (default, Sep 3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Warning:
This Python interpreter is in a conda environment, but the environment has
not been activated. Libraries may fail to load. To activate this environment
please see https://conda.io/activation
Type "help", "copyright", "credits" or "license" for more information.
Failed calling sys.__interactivehook__
Traceback (most recent call last):
File "C:\Users\WK07AD\Anaconda3\lib\site.py", line 440, in register_readline
File "C:\Users\WK07AD\Anaconda3\lib\site-packages\pyreadline\rlmain.py", line 165, in read_history_file
self.mode._history.read_history_file(filename)
File "C:\Users\WK07AD\Anaconda3\lib\site-packages\pyreadline\lineeditor\history.py", line 82, in read_history_file
for line in open(filename, 'r'):
UnicodeDecodeError: 'cp932' codec can't decode byte 0xef in position 60: illegal multibyte sequence
>>>
-----
c:\programdata\anaconda3\python.exe
を実行しました。
------
PS C:\MAMP\htdocs> c:\programdata\anaconda3\python.exe
Python 3.8.5 (default, Sep 3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Warning:
This Python interpreter is in a conda environment, but the environment has
not been activated. Libraries may fail to load. To activate this environment
please see https://conda.io/activation
Type "help", "copyright", "credits" or "license" for more information.
Failed calling sys.__interactivehook__
Traceback (most recent call last):
File "C:\programdata\anaconda3\lib\site.py", line 440, in register_readline
File "C:\programdata\anaconda3\lib\site-packages\pyreadline\rlmain.py", line 165, in read_history_file
self.mode._history.read_history_file(filename)
File "C:\programdata\anaconda3\lib\site-packages\pyreadline\lineeditor\history.py", line 82, in read_history_file
for line in open(filename, 'r'):
UnicodeDecodeError: 'cp932' codec can't decode byte 0xef in position 60: illegal multibyte sequence
>>>
ーーーーーーー
Anacondaが丸ごと2ヵ所に入ってます
・Just me:C:\Users\WK07AD\Anaconda3 以下に入ってる
・All Users:c:\programdata\anaconda3 以下に入ってる
使ってるPythonは、sys.pathの結果から「Just me」の方です
一方pipは、インストールしようとしてるパスから考えて「All Users」の方です
(「[WinError 5] アクセスが拒否されました。」になるのも「All Users」だから)
まず、そこの交通整理をした方がいいと思いますよ
使ってるPythonに紐づいてるpipを使ってインストールしないとimportできませんし、全く同じAnaconda版Python 3.8.5を2ヵ所に入れるなんて意味無いですよね
回答2件
あなたの回答
tips
プレビュー