2
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

【OpenCV】【numpy】OpenCVをインストールする時にエラーが出てハマった(未解決)

-

RaspberryPiでOpenCVを使おうとした時にハマったので備忘録として書く。
エラー部分はnumpy
(8/27 現在未解決)

環境

  • Raspbian GNU / Linux 9.8(stretch)
  • Python 3.7.4

インストール

pi@pi:~ $pip install opencv-python

Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting opencv-python
  ERROR: Could not find a version that satisfies the requirement opencv-python (from versions: none)
ERROR: No matching distribution found for opencv-python

エラーが出た。
調べてみるとopencv-pythonはARMアーキテクチャを適切にサポートしていなくPyPIにはARMベースのプラットフォーム用のパッケージがないらしい。
しかしここからRaspberryPi用のパッケージが入手できると書いてあったので飛んでみる。
サポートに書いてあったのは

Wheels provided support all Raspberry Pi models (Pi 3, Pi 2, Pi 1 and Pi Zero). Wheels are provided for Raspbian Jessie (Python 3.4) and Raspbian Stretch (Python 3.5). We plan to add support for Raspbian Buster (Python 3.7) in due course.

全く読めないのでGoogle翻訳すると

提供されるホイールは、すべてのRaspberry Piモデル(Pi 3、Pi 2、Pi 1およびPi Zero)をサポートします。Raspbian Jessie(Python 3.4)およびRaspbian Stretch(Python 3.5)用のホイールが提供されています。まもなくRaspbian Buster(Python 3.7)のサポートを追加する予定です。

(2019/08/25 現在)
とのこと。
そもそもStretchにPython3.7.4をインストールしてることが間違っていたのかな?
けどもう少しでRaspbian Buster(Python 3.7)をサポートするってことで素直に3.5で再試行してみる。

バージョンを切り替える

バージョンの確認

pi@pi:~ $python --version
Python 3.7.4

3.5.3をインストール

pi@pi:~ $pyenv install 3.5.3 
Downloading Python-3.5.3.tar.xz...
-> https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tar.xz
Installing Python-3.5.3...
Installed Python-3.5.3 to /home/pi/.pyenv/versions/3.5.3

時間はかかったがインストール完了。

バージョンを3.5.3にする

pi@pi:~ $pyenv global 3.5.3
pi@pi:~ $python --version
Python 3.5.3

バージョンが3.5.3に切り替わったのでもう一度インストールしてみる。

再試行

色々怒られていたがとりあえずインストールできた。

動作検証

やっと動かせれる!
と思ったがまたここでエラーが出る
Pythonシェルでimport cv2を叩くと

ImportError: libhdf5_serial.so.100: cannot open shared object file: No such file or directory

と出る。
libhdf5_serial
多分こいつがないよって言ってるんだろうと思い調べてみる。

sudo apt-get install libhdf5-serial-dev
これでインストールできるらしいのでインストールして再試行

ImportError: libcblas.so.3: cannot open shared object file: No such file or directory

またかよ

と思ったら何個かインストールしないと同じことが起こるらしい。

sudo apt-get install -y libcblas-dev libhdf5-dev libhdf5-serial-dev libatlas-base-dev libjasper-dev libqtgui4 libqt4-test
この何個かのパッケージをインストールして再々試行

ImportError: numpy.core.multiarray failed to import

これはnumpyのバージョンが古い時に出るエラーらしい。
アップグレードする。

pi@pi:~ $pip install numpy --upgrade

import numpy

ImportError: 

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the numpy c-extensions failed.
- Try uninstalling and reinstalling numpy.
- If you have already done that, then:
  1. Check that you expected to use Python3.5 from "/home/pi/.pyenv/versions/3.5.3/bin/python",
     and that you have no directories in your PATH or PYTHONPATH that can
     interfere with the Python and numpy version "1.17.0" you're trying to use.
  2. If (1) looks fine, you can open a new issue at
     https://github.com/numpy/numpy/issues.  Please include details on:
     - how you installed Python
     - how you installed numpy
     - your operating system
     - whether or not you have multiple versions of Python installed
     - if you built from source, your compiler versions and ideally a build log

- If you're working with a numpy git repository, try `git clean -xdf`
  (removes all files not under version control) and rebuild numpy.

Note: this error has many possible causes, so please don't comment on
an existing issue about this - open a new one instead.

Original error was: /home/pi/.pyenv/versions/3.5.3/lib/python3.5/site-packages/numpy/core/_multiarray_umath.cpython-35m-arm-linux-gnueabihf.so: undefined symbol: cblas_sgemm

これでハマった。

numpyを一旦アンインストールしもう一度インストールしてみても同じエラーが出る。

未だに解決できない

多分サイトを飛んで色々試してるうちにsudo pip install ...やらを繰り返しシステムが衝突してるのが原因なのか。。。
調べて試していても今回のエラーはなかなか解決ができない
路頭に迷った。。。
かれこれ2日同じ状況だから再インストールも検討しよう。。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
2
Help us understand the problem. What are the problem?