Pythonでモジュールのimportエラーになる

投稿者: Anonymous

Pythonでnumpyモジュールとcv2(opencv)のモジュールを使おうとしているのですがエラーになります。
ソースコードは以下の通りです。


cap.py

import sys
sys.path.append('/home/vagrant/.local/lib/python3.4/site-packages')
import numpy as np
import cv2

print("test")

実行すると、以下のようなエラーが出ます。

[email protected]:~/workspace/pythonCapture$ python cap.py
Traceback (most recent call last):
  File "cap.py", line 3, in <module>
    import numpy as np
  File "/home/vagrant/.local/lib/python3.4/site-packages/numpy/__init__.py", line 142, in <module>
    from . import add_newdocs
  File "/home/vagrant/.local/lib/python3.4/site-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/home/vagrant/.local/lib/python3.4/site-packages/numpy/lib/__init__.py", line 8, in <module>
    from .type_check import *
  File "/home/vagrant/.local/lib/python3.4/site-packages/numpy/lib/type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "/home/vagrant/.local/lib/python3.4/site-packages/numpy/core/__init__.py", line 26, in <module>
    raise ImportError(msg)
ImportError: 
Importing the multiarray numpy extension module failed.  Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control).  Otherwise reinstall numpy.

Original error was: cannot import name multiarray

cap.pyから

import numpy as np
import cv2

の部分の記述を消して実行すると、問題なくtestとprintされます。


numpyを再インストールしてくださいとメッセージが出ていたので、$ pip uninstall numpy$ pip install numpyをした後、$ python cap.pyを再度実行してみましたが同様のエラーが出ました。

また、エラー文にgit clean -xdfを実行するようにあったので$ git clean -xdfをしてみましたが、cap.pyのファイルが消えただけで、エラーは直りませんでした。

$ git clean -xdf
Removing cap.py

$ pip showコマンドでnumpyの場所を一応確認してみました。

$ pip show numpy
Name: numpy
Version: 1.15.2
Summary: NumPy: array processing for numbers, strings, records, and objects.
Home-page: http://www.numpy.org
Author: Travis E. Oliphant et al.
Author-email: None
License: BSD
Location: /home/vagrant/.local/lib/python3.4/site-packages
Requires: 
Required-by: opencv-python

$ pip showコマンドでopencv-pythonの場所も確認してみました。

$ pip show opencv-python
Name: opencv-python
Version: 3.4.3.18
Summary: Wrapper package for OpenCV python bindings.
Home-page: https://github.com/skvark/opencv-python
Author: None
Author-email: None
License: MIT
Location: /home/vagrant/.local/lib/python3.4/site-packages
Requires: numpy
Required-by: 

numpyとopencv、共にsys.path.appendで指定した’/home/vagrant/.local/lib/python3.4/site-packages’のフォルダ内にあるようです。


どうしたらエラーを消せますでしょうか…?
環境は、Windows10 ProにVirtualBoxとVagrantでUbuntuの仮想環境を作って実行しています。


[追記]

sudo apt-get install libblas3 liblapack3 libc6

上記のコマンドを実行しても同様のエラーが出ました。
回答して頂いた下記のコマンドも実行してみました。
実行コマンドとエラー文を下記に記載します。


$ sudo apt-get install python3-venv
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
E: パッケージ python3-venv が見つかりません

$ python3 -m venv env
The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

    apt-get install python3-venv

You may need to use sudo with that command.  After installing the python3-venv
package, recreate your virtual environment.

[email protected]:~/workspace/pythonCapture$ souece env/bin/activate
souece: command not found

$ source env/bin/activate
-bash: env/bin/activate: No such file or directory

$ pip install numpy opencv-python
Requirement already satisfied: numpy in /home/vagrant/.local/lib/python3.4/site-packages (1.15.2)
Requirement already satisfied: opencv-python in /home/vagrant/.local/lib/python3.4/site-packages (3.4.3.18)

$ python cap.py
Traceback (most recent call last):
  File "test.py", line 3, in <module>
    import numpy as np
  File "/home/vagrant/.local/lib/python3.4/site-packages/numpy/__init__.py", line 142, in <module>
    from . import add_newdocs
  File "/home/vagrant/.local/lib/python3.4/site-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/home/vagrant/.local/lib/python3.4/site-packages/numpy/lib/__init__.py", line 8, in <module>
    from .type_check import *
  File "/home/vagrant/.local/lib/python3.4/site-packages/numpy/lib/type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "/home/vagrant/.local/lib/python3.4/site-packages/numpy/core/__init__.py", line 26, in <module>
    raise ImportError(msg)
ImportError: 
Importing the multiarray numpy extension module failed.  Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control).  Otherwise reinstall numpy.

Original error was: cannot import name multiarray

解決

質問にあるエラーは、numpyが使用する数値演算ライブラリーがインストールされていないため発生しているように思われます。numpypipでインストールしたのであれば、libblas3, liblapack3, libc6をインストールしてみてください。

sudo apt-get install libblas3 liblapack3 libc6

もし、それでも同じエラーが出るのであれば、仮想環境を作成してインストールしてみてください。

sudo apt-get install python3.4-venv
python3 -m venv env
source env/bin/activate
pip install numpy opencv-python
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *