« TKinter afterメソッド:再帰的コールによる自動更新 | トップページ | ADCのサンプリングレート »

2021年3月 4日 (木)

Raspberry Pi 4でscipyをimport

以下の3つのimportを持つPythonコードについての作業記録。環境はRaspberry Pi 4B, Python 3.7, Python3 IDLE。

import numpy
import scipy
import matplotlib.pyplot

コードをRUNすると以下のエラーになった。

Traceback (most recent call last):
File "/home/pi/raspi/study/filter-test.py", line 3, in <module>
from scipy import signal
ModuleNotFoundError: No module named 'scipy'


pi@raspberrypi:~ $ sudo apt-get install python-scipy
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
libexiv2-14 libgfortran3 libgmime-2.6-0 uuid-dev
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
python-decorator
提案パッケージ:
python-scipy-doc
以下のパッケージが新たにインストールされます:
python-decorator python-scipy
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 1 個。
8,955 kB のアーカイブを取得する必要があります。
この操作後に追加で 38.2 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf python-decorator all 4.3.0-1.1 [14.4 kB]
取得:2 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf python-scipy armhf 1.1.0-7 [8,941 kB]
8,955 kB を 8秒 で取得しました (1,144 kB/s)
以前に未選択のパッケージ python-decorator を選択しています。
(データベースを読み込んでいます ... 現在 179465 個のファイルとディレクトリがインストールされています。)
.../python-decorator_4.3.0-1.1_all.deb を展開する準備をしています ...
python-decorator (4.3.0-1.1) を展開しています...
以前に未選択のパッケージ python-scipy を選択しています。
.../python-scipy_1.1.0-7_armhf.deb を展開する準備をしています ...
python-scipy (1.1.0-7) を展開しています...
python-decorator (4.3.0-1.1) を設定しています ...
python-scipy (1.1.0-7) を設定しています ...

なんだかインストールできた感じがする。再びRUNするも、結果は同じ。Scipy Moduleが無いといってくる。そこでpipでのインストールを実行した。

pi@raspberrypi:~ $ sudo pip install scipy
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting scipy
Downloading https://www.piwheels.org/simple/scipy/scipy-1.6.1-cp37-cp37m-linux_armv7l.whl (62.0MB)
100% |████████████████████████████████| 62.0MB 7.3kB/s
Collecting numpy>=1.16.5 (from scipy)
  Downloading https://www.piwheels.org/simple/numpy/numpy-1.20.1-cp37-cp37m-linux_armv7l.whl (11.6MB)
    100% |████████████████████████████████| 11.6MB 39kB/s
Installing collected packages: numpy, scipy
  Found existing installation: numpy 1.16.2
    Not uninstalling numpy at /usr/lib/python3/dist-packages, outside environment /usr
    Can't uninstall 'numpy'. No files were found to uninstall.
Successfully installed numpy-1.20.1 scipy-1.6.1

なんだか既にインストールされているnumpyとして1.16.2があるけれどアンインストールできなかったと言ってる。でも1.20.1は無事インストールできたようだ。結果を見る限りなんだかよい感じだ。そこで再びRUNを実行してみた。結果はエラー。。。。

Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/numpy/core/__init__.py", line 22, in <module>
from . import multiarray
File "/usr/local/lib/python3.7/dist-packages/numpy/core/multiarray.py", line 12, in <module>
from . import overrides
File "/usr/local/lib/python3.7/dist-packages/numpy/core/overrides.py", line 7, in <module>
from numpy.core._multiarray_umath import (
ImportError: libf77blas.so.3: cannot open shared object file: No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/pi/raspi/study/filter-test.py", line 2, in <module>
import numpy as np
File "/usr/local/lib/python3.7/dist-packages/numpy/__init__.py", line 145, in <module>
from . import core
File "/usr/local/lib/python3.7/dist-packages/numpy/core/__init__.py", line 48, in <module>
raise ImportError(msg)
ImportError:

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

Importing the numpy C-extensions failed. This error can happen for
many reasons, often due to issues with your setup or how NumPy was
installed.

We have compiled some common reasons and troubleshooting tips at:

https://numpy.org/devdocs/user/troubleshooting-importerror.html

Please note and check the following:

* The Python version is: Python3.7 from "/usr/bin/python3.7"
* The NumPy version is: "1.20.1"

and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.

Original error was: libf77blas.so.3: cannot open shared object file: No such file or directory

>>>

どうもlibf77blas.so.3が無いって言っている。先人の知恵に学ぶとlibatlas-base-devをインストールすれば解決するらしい。

pi@raspberrypi:~ $ sudo apt install libatlas-base-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
libexiv2-14 libgfortran3 libgmime-2.6-0 uuid-dev
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
libatlas3-base
提案パッケージ:
libatlas-doc liblapack-doc
以下のパッケージが新たにインストールされます:
libatlas-base-dev libatlas3-base
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 1 個。
5,365 kB のアーカイブを取得する必要があります。
この操作後に追加で 32.1 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf libatlas3-base armhf 3.10.3-8+rpi1 [2,399 kB]
取得:2 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf libatlas-base-dev armhf 3.10.3-8+rpi1 [2,966 kB]
5,365 kB を 2秒 で取得しました (2,200 kB/s)
以前に未選択のパッケージ libatlas3-base:armhf を選択しています。
(データベースを読み込んでいます ... 現在 180480 個のファイルとディレクトリがインストールされています。)
.../libatlas3-base_3.10.3-8+rpi1_armhf.deb を展開する準備をしています ...
libatlas3-base:armhf (3.10.3-8+rpi1) を展開しています...
以前に未選択のパッケージ libatlas-base-dev:armhf を選択しています。
.../libatlas-base-dev_3.10.3-8+rpi1_armhf.deb を展開する準備をしています ...
libatlas-base-dev:armhf (3.10.3-8+rpi1) を展開しています...
libatlas3-base:armhf (3.10.3-8+rpi1) を設定しています ...
update-alternatives: /usr/lib/arm-linux-gnueabihf/libblas.so.3 (libblas.so.3-arm-linux-gnueabihf) を提供するために自動モードで /usr/lib/arm-linux-gnueabihf/atlas/libblas.so.3 を使います
update-alternatives: /usr/lib/arm-linux-gnueabihf/liblapack.so.3 (liblapack.so.3-arm-linux-gnueabihf) を提供するために自動モードで /usr/lib/arm-linux-gnueabihf/atlas/liblapack.so.3 を使います
libatlas-base-dev:armhf (3.10.3-8+rpi1) を設定しています ...
update-alternatives: /usr/lib/arm-linux-gnueabihf/libblas.so (libblas.so-arm-linux-gnueabihf) を提供するために自動モードで /usr/lib/arm-linux-gnueabihf/atlas/libblas.so を使います
update-alternatives: /usr/lib/arm-linux-gnueabihf/liblapack.so (liblapack.so-arm-linux-gnueabihf) を提供するために自動モードで /usr/lib/arm-linux-gnueabihf/atlas/liblapack.so を使います
libc-bin (2.28-10+rpi1) のトリガを処理しています ...
pi@raspberrypi:~ $

インストールが無事完了。再度RUNを実行したところimportは無事成功し期待するようにコードが実行された。

めでたし、めでたし。

ところで、apt-getとpipは何が違うのか。aptはシステム環境、pipは個別環境にインストールされるということでインストール先が違うらしい。またインストール元(リポジトリ)が異なる。すくなくともIDLEのRUN環境ではpipのインストール先を見に行っているんだろうとは思う。結果を左右したのはそのくらいなのだろうか。。。。

 

« TKinter afterメソッド:再帰的コールによる自動更新 | トップページ | ADCのサンプリングレート »

ラズパイ日記」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« TKinter afterメソッド:再帰的コールによる自動更新 | トップページ | ADCのサンプリングレート »

フォト
無料ブログはココログ
2024年7月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31