研究室のサーバー上で
Pythonでグラフを表示しようとしたところ,エラーで表示できない.
PyQt5をインストールすると解決するらしい.
参照:
python - UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown plt.show() - Stack Overflow
せっかくなので新しい方の
PyQt6を入れる.
PyQt6を入れてから同じコードを実行すると,今度は次のエラーが出て
ipythonが終了した.
どうやら足りないライブラリがあるらしい.
今回は研究室のサーバーということで管理者権限が無いので,ソースからインストールする.
lddコマンドで見つからないライブラリを確認する.
参照:
PyQt5をUbuntuで使うときにGUI周りでエラー (WSL2) #Python - Qiita
なぜ
2回表示されているのかは分からないが,とりあえずこの
5つが無いことが分かった.
libxcb-cursor.so.0
libxcb-icccm.so.4
libxcb-image.so.0
libxcb-keysyms.so.1
libxcb-render-util.so.0
これらのインストールに必要なライブラリも入れていく.最終的にこれらを入れることになった.
xcb-proto (xcb-proto-1.17.0. Required: none)
xproto (xorgproto-2024.1. Required: util-macros-1.20.1)
xau (libXau-1.0.11. Required: xorgproto-2024.1.)
xcb (libxcb-1.17.0. Required: libXau-1.0.11, xcb-proto-1.17.0)
xcb-util (xcb-util-0.4.1. Required: libxcb-1.17.0)
xcb-util-image (xcb-util-image-0.4.1. Required: xcb-util-0.4.1)
xcb-util-renderutil (xcb-util-renderutil-0.3.10. Required: libxcb-1.17.0)
xcb-util-cursor (xcb-util-cursor-0.1.4. Required: xcb-util-image-0.4.1, xcb-util-renderutil-0.3.10)
xorg-macros (util-macros-1.20.1. Required: Xorg build environment)
xcb-util-keysyms (xcb-util-keysyms-0.4.1. Required: libxcb-1.17.0)
xcb-util-wm (xcb-util-wm-0.4.2. Required: libxcb-1.17.0)
ちょいちょいライブラリ名とパッケージ名が違ってややこしい.
・
libxcb-icccm.so.4は
xcb-util-wmに入っている.
・
xorg-macrosは必須ではなく
xcb-util-keysysmsインストールにおける推奨だが,警告が出るのが嫌なので一応入れておく.
・
xauはよく見たら元々入っていたので要らなかったかもしれない.
パッケージの一覧とそのリンク
Beyond Linux® From Scratch (System V Edition)
ここでインストールするライブラリは「VI. Graphical Components」の「24. Graphical Environments」にある.
xcb-proto
パッケージ名: xcb-proto
バージョン: 1.17.0
依存先: 無し
ダウンロード:
xcb-proto-1.17.0
${XCB_PROTO_PREFIX}はインストールしたいディレクトリのパス.
${XCB_PROTO_PREFIX}/の下に
lib/と
share/が作られる.
構造はこんな感じ(一部省略)
${XCB_PROTO_PREFIX}/
lib/
-- python/python3.9/site-packages/xcbgen/
-- (python modules)
share/
-- pkgconfig/
-- xcb-proto.pc
-- xcb/
-- (
xmlファイル)
${PKF_CONFIG_PATH}に
pcファイルのリンクを作成
ちなみに,
xcb-protoに依存するライブラリをインストールする際に必要な
pcファイルが見つからないと次のようなエラーが出る.
参照:
linux - Installing libxcb - No package 'xcb-proto' found - Stack Overflow
where to find xproto.pc ?
xproto
パッケージ名: xorgproto
バージョン: 2024.1
依存先: util-macros-1.20.1
ダウンロード:
xorgproto-2024.1
構造はこんな感じ(一部省略)
${XPROTO_PREFIX}
- include
- share
- pkgconfig
-
xprotp.pcなどの
pcファイル
- doc
- 各種ドキュメント?
${PKF_CONFIG_PATH}に
pcファイルのリンクを作成
xau
パッケージ名: libXau
バージョン: 1.0.11
依存先: xorgproto-2024.1
ダウンロード:
libXau-1.0.11
構造はこんな感じ(一部省略)
${XAU_PREFIX}
- include
- lib
- (各種
soファイル,
aファイル)
- pkgconfig
- share
${PKF_CONFIG_PATH}に
pcファイルのリンクを作成
xauには
xcb-protoと
xprotoには無かったライブラリファイル(
soファイル)がある(以降の
xcbなども同様).
これらは
${LD_LIBRARY_PATH}で指定したディレクトリにコピーする.リンクを貼るのでも良いと思う.
xcb
パッケージ名: libxcb
バージョン: 1.17.0
依存先: libXau-1.0.11, xcb-proto-1.17.0
ダウンロード:
libxcb-1.17.0
インストール
構造はこんな感じ(一部省略)
${XCB_PREFIX}
- include
- lib
- (各種
soファイル,
aファイル)
- pkgconfig
- (各種
pcファイル)
- share
xauと同様にして
pcファイルと
soファイルのリンクを作成またはコピーする.
以下同様のため省略,パッケージの概要のみ記載する.
xcb-util
パッケージ名: xcb-util
バージョン: 0.4.1
依存先: libxcb-1.17.0
ダウンロード:
xcb-util-0.4.1
xcb-util-image
パッケージ名: xcb-util-image
バージョン: 0.4.1
依存先: xcb-util-0.4.1
ダウンロード:
xcb-util-image-0.4.1
xcb-util-renderutil
パッケージ名: xcb-util-renderutil
バージョン: 0.3.10
依存先: libxcb-1.17.0
ダウンロード:
xcb-util-renderutil-0.3.10
xcb-util-cursor
パッケージ名: xcb-util-cursor
バージョン: 0.1.4
依存先: xcb-util-image-0.4.1, xcb-util-renderutil-0.3.10
ダウンロード:
xcb-util-cursor-0.1.4
xorg-macros
パッケージ名: util-macros
バージョン: 1.20.1
依存先: Xorg build environment
ダウンロード:
util-macros-1.20.1
xcb-util-keysymsのインストール時に警告が出るので一応入れておく.
xcb-util-keysyms
パッケージ名: xcb-util-keysyms
バージョン: 0.4.1
依存先: libxcb-1.17.0
ダウンロード:
xcb-util-keysyms-0.4.1
xcb-util-wm
パッケージ名: xcb-util-wm
バージョン: 0.4.2
依存先: libxcb-1.17.0
ダウンロード:
xcb-util-wm-0.4.2
libxcb-icccmはこのパッケージに含まれている.
インストールしても反映されなかったので一度ログアウトして再度ログインし直すと,きちんと反映されていた.
先のコードを実行すると,画像はきちんと表示できて,拡大縮小や移動なども問題なく出来たが,警告が出た.
調べてもあまり情報が出てこない.
ひとまず保留として,時間のある時にまた調べてみたい.
[2024/10/17 追記]
tightvncserverをアンインストールしてこれを
tigervnc-standalone-serverと
tigervnc-xorg-extensionで置き換えれば行けそうな感じがする.参照:
Wireshark not work through VNC
ただ依存パッケージが非常に多くて
aptとか使えない環境だと大変そう.
Debian -- sid の tigervnc-standalone-server パッケージに関する詳細