質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

1554閲覧

Python3でのmecabのimport時にエラーが発生する

taisei12232

総合スコア23

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/11/21 17:30

編集2021/11/21 17:30

pythonでmecabを使用しようとしたところ、以下のエラーが発生してしまいます。
原因がわかる方や対処方法ご存知の方いらっしゃいましたら、ご教授お願いします。

ImportError: dlopen(/Users/ユーザー名/.pyenv/versions/3.9.4/lib/python3.9/site-packages/MeCab/_MeCab.cpython-39-darwin.so, 2): no suitable image found. Did find: /Users/ユーザー名/.pyenv/versions/3.9.4/lib/python3.9/site-packages/MeCab/_MeCab.cpython-39-darwin.so: mach-o, but wrong architecture /Users/ユーザー名/.pyenv/versions/3.9.4/lib/python3.9/site-packages/MeCab/_MeCab.cpython-39-darwin.so: mach-o, but wrong architecture

使用環境は
python ver3.9.4
mecab-python3 ver 1.0.4
maxOS Big Sur ver11.6 Apple m1チップ
です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2021/11/21 23:56

どうやって mecab-python3 をインストールしたのでしょうか。 file ~/.pyenv/versions/3.9.4/lib/python3.9/site-packages/MeCab/_MeCab.cpython-39-darwin.so file ~/.pyenv/versions/3.9.4/bin/python3.9 の結果あたりを見てみたいと思いました。
taisei12232

2021/11/24 15:20

pip installにてインストールしました。 上記を実行してみたところ、 '''/Users/ユーザー名/.pyenv/versions/3.9.4/lib/python3.9/site-packages/MeCab/_MeCab.cpython-39-darwin.so: Mach-O 64-bit bundle x86_64''' '''/Users/ユーザー名/.pyenv/versions/3.9.4/bin/python3.9: Mach-O 64-bit executable arm64''' となりました。
quickquip

2021/11/25 12:08

手元にM1Macがなくて直接の回答にはなりませんが「なぜこんな状況になったのか?」の方に興味があります。 シェルで uname -m した結果は何になりますか? 現状、シェルはarm64で動いているんでしょうか? rosetta2配下で動いているんでしょうか?
taisei12232

2021/11/25 12:17

armでnpmが上手く動作しなかったのでRosettaと切り替えていたのが原因かなと思ってます。 pip installeを実行した時はarm64 でした。
quickquip

2021/11/25 13:17

arm64のシェル/Python/pipの環境で、Intel用バイナリしかないパッケージがpip install 時になぜエラーが出ないのか? という疑問だけが残りましたが、M1実機がないと検証もできないので失礼します。 (情報はこの欄ではなくて質問に追記する方がよいですよ)
guest

回答3

0

原因は、エラーメッセージにかかれているとおりで「wrong architecture」です。

M1 Macには、ARMのAArch64の機械命令(architecture)を使うもの(ELFオブジェクト)とRosetta 2配下でインテルのx86-64の機械命令(architecture)を使うもの(ELFオブジェクト)があります。

MeCabのように機械命令をつかう動的リンクライブラリを呼び出しているようなモジュールでは、Pythonの機械命令(architecture)とモジュールに入っている動的リンクライブラリの機械命令(architecture)は同じでなければならなりません。

ご質問のケースではPythonの機械命令(architecture)とモジュールに入っている動的リンクライブラリの機械命令(architecture)が異なっていたため、動的リンクライブラリのopen時にそれを検出してエラーを出して終了しています。

PythonのアーキテクチャはPython対話モードの起動時に表示されるはずですので、それに合わせたMeCabをインストールしてください。

投稿2021/11/22 00:51

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taisei12232

2021/11/23 08:01

ご回答ありがとうございます。 pythonの対話モードを起動してみたのですが、バージョンしか表示されません。 また、アーキテクチャにあったMeCabのインストール方法もお聞きしてもよろしいでしょうか。 不勉強で申し訳ありません。
guest

0

自己解決

Rosettaに切り替えた状態でpythonを入れ直したらうまく行きました。

投稿2021/11/26 13:40

taisei12232

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

https://pypi.org/project/mecab-python3/#files
を見て欲しいのですが、mecab-python3がarm64向けのバイナリを出していません。
したがって、そもそもPython環境をIntel向けバイナリで準備するべきです。


なぜarm64向けの環境でpip installして、Intel向けバイナリが入ってしまったのか? が謎のまま残ります。
バイナリがないのでソースからビルドしようとして失敗することになるはずと想像しますが、実機がないので検証等できません。

投稿2021/11/26 00:12

quickquip

総合スコア11029

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問