原因はpip install PySide2
できないため。PySide2はapt
でもインストールできるが、それではPySimpleGUIQtから参照できずエラーになった。
成果物
概要
それぞれのライブラリは以下のように下のものを参照している。
だがRaspberry PIはpip install PySide2
できないため、PySimpleGUIQtが実行できなかった。
Qtのインストール
setup.sh参照。おもなコマンドは以下。
sudo apt update sudo apt -y install build-essential git cmake qt-sdk libgl1-mesa-dev qt5-default libxml2 libxslt1.1 python-dev qtbase5-dev sudo apt -y install qttools5-dev-tools libqt5clucene5 libqt5concurrent5 libqt5core5a libqt5dbus5 libqt5designer5 libqt5designercomponents5 libqt5feedback5 libqt5gui5 libqt5help5 libqt5multimedia5 libqt5network5 libqt5opengl5 libqt5opengl5-dev libqt5organizer5 libqt5positioning5 libqt5printsupport5 libqt5qml5 libqt5quick5 libqt5quickwidgets5 libqt5script5 libqt5scripttools5 libqt5sql5 libqt5sql5-sqlite libqt5svg5 libqt5test5 libqt5webkit5 libqt5widgets5 libqt5xml5 libqt5xmlpatterns5 libqt5xmlpatterns5-dev
以下情報源。
ラズパイでpip install PySide2
できない
ラズパイではpip install PySide2
がエラーになってしまう。原因はPySide2のARM版ビルドがないから。
Raspberry PIのCPUはARMアーキテクチャである。なのにPySide2はARM用にビルドされたファイルが存在しない。そのせいでラズパイではpip install PySide2
でエラーになるらしい。
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting PySide2 Could not find a version that satisfies the requirement PySide2 (from versions: ) No matching distribution found for PySide2
情報源は以下URL。
- why-do-i-keep-getting-errors-when-i-try-to-install-pyside2-on-windows-pc
- installing-pyside2-on-raspberry-pi
補足。実行ファイルはCPUアーキテクチャごとに異なるバイナリが必要になる。CPUに合わせたバイナリ実行ファイルが必要だ。ところがPySide2にはARM用バイナリがない。そのためARMのCPUをもったラズパイでpip install PySide2
を実行するとエラーになってしまう。
ラズパイのapt
でPySide2をインストールする
ラズパイではpip
でPySide2をインストールできない。それは先述のとおり。しかし、apt
でインストールすることはできるようだ。詳細はsetup.sh参照。コードにすると以下。
sudo apt -y install python3-pyside2.qt3dcore python3-pyside2.qt3dinput python3-pyside2.qt3dlogic python3-pyside2.qt3drender python3-pyside2.qtcharts python3-pyside2.qtconcurrent python3-pyside2.qtcore python3-pyside2.qtgui python3-pyside2.qthelp python3-pyside2.qtlocation python3-pyside2.qtmultimedia python3-pyside2.qtmultimediawidgets python3-pyside2.qtnetwork python3-pyside2.qtopengl python3-pyside2.qtpositioning python3-pyside2.qtprintsupport python3-pyside2.qtqml python3-pyside2.qtquick python3-pyside2.qtquickwidgets python3-pyside2.qtscript python3-pyside2.qtscripttools python3-pyside2.qtsensors python3-pyside2.qtsql python3-pyside2.qtsvg python3-pyside2.qttest python3-pyside2.qttexttospeech python3-pyside2.qtuitools python3-pyside2.qtwebchannel python3-pyside2.qtwebsockets python3-pyside2.qtwidgets python3-pyside2.qtx11extras python3-pyside2.qtxml python3-pyside2.qtxmlpatterns python3-pyside2uic
apt
でインストールしたPySide2ではPySimpleGUIQtから参照できない
残念ながらapt
でインストールしたPySide2では、PySimpleGUIQtから参照できない。
PySimpleGUIQtからPySide2を参照したコードrun.pyを書いて実行すると、以下のようなエラーになってしまう。
import PySimpleGUIQt as sg ...
ImportError: No module named PySide2.QtWidgets
ただし、PySide2を直接参照するコードps2.pyを書いて実行すると成功する。
#!/usr/bin/python # -*- coding: utf-8 -*- from sys import exit, argv from PySide2.QtWidgets import QApplication, QLabel def Main(): app = QApplication(argv) label = QLabel("Hello World") label.show() exit(app.exec_()) if __name__ == '__main__': Main()
このことから、PySimpleGUIQtからPySide2を参照する点に問題があるとわかる。その原因は、pip
でPySide2をインストールができず、やむなくapt
でインストールしたせいだろう。
PySimpleGUIQtの実装はわからないが、PySimpleGUIQtはapt
でなくpip
でインストールしたPySide2しか参照できない。だからそれができないラズパイではPySimpleGUIQtが使えない。
補足
python -m venv ...
で仮想環境をつくり有効化したときもPySide2が参照できなくなってしまう。
ModuleNotFoundError: No module named 'PySide2'
きわめて限定的な状況でしか使えないようだ。これはあかん。
結論
ラズパイではPySimpleGUIQtが使えない。理由はPySide2のARM用バイナリがないせいでPySimpleGUIQtがPySide2を参照できないため。
おそらくPySimpleGUIQtでは、pip
でインストールしたPySide2でないと参照できないのだろう。apt
でしかインストールできないラズパイではPySimpleGUIQtからPySide2を参照できずエラーになってしまう。
所感
4つあるうちの2つが実行できないことを確認できてしまった。これはひどい。期待はずれ。
API | ラッパ元 | 可 | 実行できない理由 |
---|---|---|---|
PySimpleGUI | Tkinter | ☓ | 絵文字フォントがインストールされているとTkinterがエラーになって使えないため。 |
PySimpleGUIQt | Qt | ☓ | pip install PySide2 できないため。apt で入れたものは参照できなかった。※ |
PySimpleGUIWx | wxWidgets | ? | 未確認 |
PySimpleGUIWeb | Remi | ○ | 実行できた! |
対象環境
- Raspbierry pi 4 Model B
- Raspberry Pi OS buster 10.0 2020-08-20 ※
- bash 5.0.3(1)-release
$ uname -a Linux raspberrypi 5.4.83-v7l+ #1379 SMP Mon Dec 14 13:11:54 GMT 2020 armv7l GNU/Linux