myamto
@myamto (Masato Myamto)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

termextractを使おうとしたらmoduleをimportできなかった

経緯

医療系の自然言語処理を行なっていて,専門用語や臨時一語,複合語などをシステムに理解させようと思い,Termextractというpythonのライブラリを使用しようと試みたところ,エラーを吐いてしまいました.

やったこととしてはこちらの記事を参考にし,公式HPからダウンロードしたzipファイルを解凍し,terminalからsetup.pyのinstallを実行しました.

>>cd Downloads/pytermextract-0_01/
>>python3 setup.py install
>>python3

import termextract.mecab
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/miyamotomasato/termextract.py", line 2, in <module>
    import termextract.mecab
ModuleNotFoundError: No module named 'termextract.mecab'; 'termextract' is not a package

しかし,python3でライブラリをインポートしようとしたところエラーを返されてしまいました.

やったこと

ModuleNotFoundErrorの原因としてシステム内の参照パスがうまく設定されていないことを考え,sys.pathなどで調べてみました.結果,sys.pathで出力されたパス内にtermextractが確かに存在することは確認できました.

質問

解決方法について何かご存知の方や詳しい方に教えていただけると幸いです.よろしくお願いします.

0

1Answer

  File "/Users/miyamotomasato/termextract.py", line 2, in <module>
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    import termextract.mecab
ModuleNotFoundError: No module named 'termextract.mecab'; 'termextract' is not a package

^ で示したように /Users/miyamotomasato/termextract.py でエラーが出ていますね。

import xxx は、カレントディレクトリに xxx.py があれば、インストールしたパッケージより先にそちらを読み込みます。 import termextract.mecab はカレントディレクトリの termextract.py を読み込み、その中で mecab モジュールが定義されていないということでエラーになります。

termextract.py を消すか名前を変えれば動くと思います。

1Like

Comments

  1. @myamto

    Questioner

    @uasi
    ご回答ありがとうございます.
    実行ファイルの名前をtermextract.pyにしていたのを変更したところ無事通りました!

    [import xxx]は,カレントディレクトリの[xxx.py]ファイルを先に参照するのですね.勉強になりました.
    今後は気をつけてファイル名を設定しようと思います.

Your answer might help someone💌