質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2127閲覧

[RaspberryPi]PyQt5のImportError

sasa_ki

総合スコア4

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/04/24 03:02

編集2020/04/24 05:40

前提・実現したいこと

Python3でリアルタイムスペクトルアナライザを作ろうと思い、PyAudioを使い、ネットに落ちていた記事を参考にコードを作成しました。
PyQt5をインストールする必要があるとのことでしたので、下記の記事(※1)を参考にインストールをしていたところ、PyQt5のインストールに失敗します。
開発環境はRaspberryPi3です。
調べていても原因がわからず困っています。
どなたかアドバイスを頂けると助かります。

(※1)https://tomosoft.jp/design/?p=10991

発生している問題・エラーメッセージ

コード実行時のエラーメッセージ Traceback (most recent call last): File "web1-2.py", line 2, in <module> import pyqtgraph as pg File "/home/pi/.local/lib/python3.7/site-packages/pyqtgraph/__init__.py", line 13, in <module> from .Qt import QtGui File "/home/pi/.local/lib/python3.7/site-packages/pyqtgraph/Qt.py", line 153, in <module> from PyQt5 import QtGui, QtCore, QtWidgets, uic ImportError: cannot import name 'QtWidgets' from 'PyQt5' (unknown location) インストール時のエラーメッセージ make[1]: *** [Makefile:1740: sipQtGuiQShortcutEvent.o] エラー 1 make[1]: ディレクトリ '/home/pi/ダウンロード/PyQt5-5.13.2/QtGui' から出ます make: *** [Makefile:101: sub-QtGui-make_first-ordered] エラー 2

該当のソースコード

Python3

1#プロット関係のライブラリ 2import pyqtgraph as pg 3from pyqtgraph.Qt import QtCore, QtGui 4import numpy as np 5import sys 6from PyQt5.QtWidgets import QApplication 7 8#音声関係のライブラリ 9import pyaudio 10import struct 11 12class PlotWindow: 13 def __init__(self): 14 #マイクインプット設定 15 self.CHUNK =1024*2 # 1度に読み取る音声のデータ幅 16 self.RATE = 48000 # サンプリング周波数 17 self.update_seconds = 50 # 更新時間[ms] 18 self.audio = pyaudio.PyAudio() 19 self.stream = self.audio.open(format=pyaudio.paInt16, 20 channels=1, 21 rate=self.RATE, 22 input=True, 23 frames_per_buffer=self.CHUNK) 24 25 #音声データの格納場所(プロットデータ) 26 self.data = np.zeros(self.CHUNK) 27 self.axis = np.fft.fftfreq(len(self.data), d=1.0/self.RATE) 28 29 #プロット初期設定 30 self.win = pg.GraphicsWindow() 31 self.win.setWindowTitle("SpectrumAnalyzer") 32 self.plt = self.win.addPlot() # プロットのビジュアル関係 33 self.plt.setYRange(0, 30) # y軸の制限 34 35 #アップデート時間設定 36 self.timer = QtCore.QTimer() 37 self.timer.timeout.connect(self.update) 38 self.timer.start(self.update_seconds) # 10msごとにupdateを呼び出し 39 40 def update(self): 41 self.data = np.append(self.data, self.AudioInput()) 42 if len(self.data)/1024 > 10: 43 self.data = self.data[1024:] 44 self.fft_data = self.FFT_AMP(self.data) 45 self.axis = np.fft.fftfreq(len(self.data), d=1.0/self.RATE) 46 # symbol="o", symbolPen="y", symbolBrush="b") 47 self.plt.plot(x=self.axis, y=self.fft_data, clear=True, pen="y") 48 49 def AudioInput(self): 50 ret = self.stream.read(self.CHUNK) # 音声の読み取り(バイナリ) CHUNKが大きいとここで時間かかる 51 #バイナリ → 数値(int16)に変換 52 #32768.0=2^16で割ってるのは正規化(絶対値を1以下にすること) 53 ret = np.frombuffer(ret, dtype="int16")/32768.0 54 return ret 55 56 def FFT_AMP(self, data): 57 data = np.hamming(len(data))*data 58 data = np.fft.fft(data) 59 data = np.abs(data) 60 return data 61 62if __name__ == "__main__": 63 plotwin = PlotWindow() 64 if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'): 65 QtGui.QApplication.instance().exec_() 66

試したこと

補足情報(FW/ツールのバージョンなど)

プログラミング初心者で検討違いのことをしているかもしれません。ご指摘をいただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t_obara

2020/04/24 04:39

参考にしたページの確認プログラムは動作するのですか?
sasa_ki

2020/04/24 04:58

ご返信ありがとうございます。 動作しませんでした。 以下のエラーが発生しました。 ModuleNotFoundError: No module named 'PyQt5.QtWidgets'
guest

回答1

0

ベストアンサー

使用されているPython3.7が、RaspbianのsystemのPythonなのであれば、対応するPyQt5をaptでインストールするのが良いと思います。(そうでない限り、PyQt5を自前でコンパイルする必要があります。)
sudo apt-get install python3-pyqt5

Raspbianのバージョンが、参考にされているサイトと同じstretchなのであれば、適したPyQt5のバージョンは5.7のようです。
https://packages.debian.org/search?keywords=PyQt5&searchon=names&suite=oldstable&section=main

もしRaspbianが、stretchの次のバージョンのbusterであれば、対応するPyQtのバージョンは5.11ですね。
https://packages.debian.org/search?keywords=PyQt5&searchon=names&suite=stable&section=main

そして、使用されているPython3.7がRaspbianのシステムのPythonとは異なるものなのであれば、このようにリポジトリから入れることは出来なくて、自前でコンパイルか、またはそのPython3.7とRaspbianのバージョンが等しい環境でコンパイル済みのPyQt5というものを探してくる、という手段になります。

P.S. スペアナ楽しそうですね!

投稿2020/04/24 09:09

編集2020/04/24 09:14
akainem

総合スコア40

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sasa_ki

2020/04/27 00:30

ご返信が遅れまして、申し訳ありません。 調べたところ、バージョンはbusterのようです! バージョンによってインストールするPyQtが異なること、等知らないことだらけでしたので、本当に助かりました。 まだ、動作には至っていませんが、調べながら進められるかと思います。 ありがとうございました。 P.S.難しい、わからないことだらけですが、やっていて楽しいです!
sasa_ki

2020/04/27 06:57

sudo apt-get install python3-pyqt5を行うと、 ”python3-pyqt5 はすでに最新バージョン (5.11.3+dfsg-1+rpi1+b3) です。”とのメッセージが出力されます バージョンがbuserですので、対応バージョンかと思いますが、エラーが変わらず発生しています。 もし、他に考えられる原因がわかりましたら、教えていただけますと幸いです。
akainem

2020/04/28 08:35 編集

エラーが変わらずという事は、実行時にこのエラーが出てしまうんですね? ImportError: cannot import name 'QtWidgets' from 'PyQt5' (unknown location) 前に入れようとしていたPyQt5-5.13.2のパスが残っていてそちらが呼ばれてしまっている可能性はないでしょうか。その実行しているターミナルで、次のコマンドを実行するとちゃんと5.11.3と出ますか? python -c "from PyQt5.Qt import PYQT_VERSION_STR; print(PYQT_VERSION_STR)"
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問