-
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日同じ状況だから再インストールも検討しよう。。