2017年1月22日日曜日

ImportError: No module named queue

pythonでword2vecを使おうとしたときのエラー
$ python word2vec.py 
Traceback (most recent call last):
  File "word2vec.py", line 3, in <module>
    from gensim.models import word2vec
  File "/Library/Python/2.7/site-packages/gensim/__init__.py", line 6, in <module>
    from gensim import parsing, matutils, interfaces, corpora, models, similarities, summarization
  File "/Library/Python/2.7/site-packages/gensim/summarization/__init__.py", line 4, in <module>
    from .keywords import keywords
  File "/Library/Python/2.7/site-packages/gensim/summarization/keywords.py", line 13, in <module>
    from six.moves.queue import Queue as _Queue
ImportError: No module named queue

これの原因としては、sixまわりのファイルが以下の2つに重複して入ってたことによる

1. /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/
2. /Library/Python/2.7/site-packages

そもそもの原因は、バージョンが低かったこと。
pipでアップグレードすると、2. のパスが更新される。
でも、実際にプログラムを実行すると1. を見に行く。
なので、バージョンの低いファイルを読み込んでしまい、エラーになっていた。

仕方ないので、1. にあったsix.pyとsix.pycを削除したら動くようになった。
本当なら削除するよりも、パスを変更する等の方がいいのだけれど…

0 件のコメント:

コメントを投稿