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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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回答

2853閲覧

[RaspberryPi]SIP Moduleのバージョンエラー

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/27 06:02

前提・実現したいこと

Python3でリアルタイムスペクトルアナライザを作ろうと思い、PyAudioを使い、ネットに落ちていた記事を参考にコードを作成しました。
開発環境はRaspberryPi3です。
下記の方法(※1)に従い、PyQt 5.7+dfsg-5、SIP 4.18.1をインストールしています。

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

SipModuleAPIのバージョンとは何か、解決方法がわかりません。
調べていても原因がわからず困っています。
どなたかアドバイスを頂けると助かります。

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

RuntimeError: the sip module implements API v11.0 to v11.3 but the module requires API v12.4

該当のソースコード

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_()

試したこと

他の質問でsudo apt-get install python3-pyqt5を行ってみてはとのアドバイスをいただいたので、インストールしました。
”python3-pyqt5 はすでに最新バージョン (5.7+dfsg-5) です。”とのメッセージが出ています。

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

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

sipは、Cで書かれたライブラリをPythonで使えるようにする(Python bindingを作る)ためのツールです。QTがCで作られているので。
参考にされているサイトは、QTを自分でコンパイルする(Python bindingを作る)ための手順が書かれていますので、sipを必要としています。
エラー文の意味は、「インストールされているsipはAPI v11.0 から v11.3までなのに、PyQt5 moduleがsip API v12.4を要求しているので合致しないぞ」です。

しかし、aptでインストールしたのであれば自分でコンパイルする必要はありませんので、sipを気にする必要は無いはずです。そのエラーは、aptでインストールしたPyQt5を使えていないために出ているのだと思います。
2つの異なるアプローチで入れたPyQt5がシステムに存在する状態ですので、手っ取り早い手段はraspbianをクリーンインストールして、sudo apt-get install python3-pyqt5でインストールすることです。
それから、参考にするサイトは、日付が最新のもので、OSのバージョンが等しいなど同じ環境の記事や投稿に絞って確認した方が良いです。

クリーンインストールでない方法としては、似た状況の投稿などをStackoverflowなどで沢山見ては突破するのを何ステップも繰り返すため、その都度状況によります。
例えば次のような手とか、調べ方が使えるかもしれません。

  • 参考にされたサイトの手順で入れたPyQt5関連のものを削除して実行すると、エラー文が変わるか
  • PYTHONPATHを見て、呼び出されるPyQt5のバージョンを確認
  • python -c "from PyQt5.Qt import PYQT_VERSION_STR; print(PYQT_VERSION_STR)"で呼び出されるPyQt5のバージョンを確認
  • エラー文から逆に考えると、sip API v12.4を必要とするPyQt5のバージョンとは何か?を調べる

などでしょうか。

投稿2020/04/28 09:47

akainem

総合スコア40

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

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

sasa_ki

2020/04/29 01:28

>それから、参考にするサイトは、日付が最新のもので、OSのバージョンが等しいなど同じ環境の記事や>投稿に絞って確認した方が良いです。 情報の取捨選択ができず、無闇矢鱈と記載されていることを試していました。 まさにそのとおりだと、実感しています。 別のSDカードに新規でインストールして試してみます。 細かいところまで丁寧に教えていただき、本当にありがとうございます。
akainem

2020/04/29 13:21

いえいえ。私も昔から電子工作好きです。スペアナ上手くいきますように。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問