Pythonのパッケージっていつもインストールに失敗して使えない印象。
やりたかったこと
index.html
<input id="name"> <button onclick="save()">OK</button> <script> async function save() { const text = doqument.querySelector('#name').value let res = await pywebview.api.save(text); console.log(res); } </script>
run.py
#!/usr/bin/env python3 # coding: utf8 import webview class Api: def save(self, text): with open('./save.txt', 'w', encoding='utf-8') as f: f.write(text) api=Api() window = webview.create_window("PyWebView", url="web\\index.html", js_api=api) webview.start(http_server=True, debug=True)
結果
$ ./run.py [pywebview] GTK cannot be loaded Traceback (most recent call last): File "/home/pi/.anyenv/envs/pyenv/versions/3.10.5/lib/python3.10/site-packages/webview/guilib.py", line 25, in import_gtk import webview.platforms.gtk as guilib File "/home/pi/.anyenv/envs/pyenv/versions/3.10.5/lib/python3.10/site-packages/webview/platforms/gtk.py", line 20, in <module> import gi ModuleNotFoundError: No module named 'gi' [pywebview] QT cannot be loaded Traceback (most recent call last): File "/home/pi/.anyenv/envs/pyenv/versions/3.10.5/lib/python3.10/site-packages/webview/guilib.py", line 37, in import_qt import webview.platforms.qt as guilib File "/home/pi/.anyenv/envs/pyenv/versions/3.10.5/lib/python3.10/site-packages/webview/platforms/qt.py", line 24, in <module> from qtpy import QtCore ModuleNotFoundError: No module named 'qtpy' Traceback (most recent call last): File "/tmp/work/Python.PyWebView.HelloWorld.20240130133827/src/0/run.py", line 18, in <module> webview.start(http_server=True, debug=True) File "/home/pi/.anyenv/envs/pyenv/versions/3.10.5/lib/python3.10/site-packages/webview/__init__.py", line 155, in start guilib = initialize(gui) File "/home/pi/.anyenv/envs/pyenv/versions/3.10.5/lib/python3.10/site-packages/webview/guilib.py", line 109, in initialize raise WebViewException( webview.util.WebViewException: You must have either QT or GTK with Python extensions installed in order to use pywebview.
インストールできなかった
PyWebView自体はインストールできた。
$ pip install pywebview Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting pywebview Downloading https://www.piwheels.org/simple/pywebview/pywebview-4.4.1-py3-none-any.whl (405 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 405.9/405.9 kB 126.2 kB/s eta 0:00:00 Collecting proxy-tools Downloading https://www.piwheels.org/simple/proxy-tools/proxy_tools-0.1.0-py3-none-any.whl (3.7 kB) Collecting bottle Downloading https://www.piwheels.org/simple/bottle/bottle-0.12.25-py3-none-any.whl (90 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 90.2/90.2 kB 271.0 kB/s eta 0:00:00 Requirement already satisfied: typing-extensions in /home/pi/.anyenv/envs/pyenv/versions/3.10.5/lib/python3.10/site-packages (from pywebview) (4.4.0) Installing collected packages: proxy-tools, bottle, pywebview Successfully installed bottle-0.12.25 proxy-tools-0.1.0 pywebview-4.4.1
でも、依存関係のGTKやQTがインストールできなかった。
公式文書を読むとLinuxはGTKかQtのインストールが必要とある。その手順に従ってみたが「パッケージが見つからない」と怒られた。
$ sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0 gir1.2-webkit2-4.1 パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 E: パッケージ gir1.2-webkit2-4.1 が見つかりません E: 'gir1.2-webkit2-4.1' に一致するパッケージは見つかりませんでした E: 正規表現 'gir1.2-webkit2-4.1' ではパッケージは見つかりませんでした
パッケージgir1.2-webkit2-4.1
、無いってよ。おい!
パッケージマネージャ使えねぇ……。ネットから入手するか。
/etc/apt/sources.list
に以下を追加しろってさ。
deb http://security.debian.org/debian-security bookworm-security main
元からあったのに合わせて以下にした。
deb http://security.debian.org/debian-security buster main contrib non-free rpi
再びインストールを試みるも、やはり見つからず……。
GTKは諦めてQtのインストールを試みるも、失敗……。
$ pip install qtpy pyside2 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting qtpy Downloading https://www.piwheels.org/simple/qtpy/QtPy-2.4.1-py3-none-any.whl (93 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 93.5/93.5 kB 257.4 kB/s eta 0:00:00 ERROR: Could not find a version that satisfies the requirement pyside2 (from versions: none) ERROR: No matching distribution found for pyside2
$ sudo apt install python3-pyqt5 python3-pyqt5.qtwebengine python3-pyqt5.qtwebchannel libqt5webkit5-dev パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 パッケージ python3-pyqt5.qtwebengine は使用できませんが、別のパッケージから参照されます。 これは、パッケージが欠落しているか、廃止されたか、または別のソース からのみ利用可能であることを意味します。 E: パッケージ 'python3-pyqt5.qtwebengine' にはインストール候補がありません
GTKもQTもインストールできなかった。
PyWebView、使えませんでした……。
同じようなことができるライブラリや言語API、どこかにないかなぁ。