サーバー上での画像表示
    Top > Python > エラー
    サーバー上でPythonでの画像表示ができない
     研究室のサーバー上で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」にある.
    環境変数
     各パッケージをインストールした際に生成されるpcファイルは通常/usr/lib(64)/pkgconfig/などに置かれるらしい.  今回はルート権限が無いので,(home)/.local/lib/pkgconfigにリンクを置くことにする.(home)はホームディレクトリ.  PKG_CONFIG_PATHという環境変数を次のように設定しておく.  またLD_LIBRARY_PATHも同様に設定する.  今回は(home)/.local/lib64に置くとして,
    インストール
    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 パッケージに関する詳細
    References
    python - UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown plt.show() - Stack Overflow + https://stackoverflow.com/questions/77507580/userwarning-figurecanvasagg-is-non-interactive-and-thus-cannot-be-shown-plt-sh PyQt5をUbuntuで使うときにGUI周りでエラー (WSL2) #Python - Qiita + https://qiita.com/momomo_rimoto/items/83917d3f9f5dd35457e1 Beyond Linux® From Scratch (System V Edition) + https://www.linuxfromscratch.org/blfs/view/git/index.html linux - Installing libxcb - No package 'xcb-proto' found - Stack Overflow + https://stackoverflow.com/questions/38313559/installing-libxcb-no-package-xcb-proto-found where to find xproto.pc ? + https://xcb.pdx.freedesktop.narkive.com/oAQAn28I/where-to-find-xproto-pc xcb-proto-1.17.0 + https://www.linuxfromscratch.org/blfs/view/systemd/x/xcb-proto.html xorgproto-2024.1 + https://www.linuxfromscratch.org/blfs/view/git/x/xorgproto.html libXau-1.0.11 + https://www.linuxfromscratch.org/blfs/view/systemd/x/libXau.html libxcb-1.17.0 + https://www.linuxfromscratch.org/blfs/view/git/x/libxcb.html xcb-util-0.4.1 + https://www.linuxfromscratch.org/blfs/view/git/x/xcb-util.html xcb-util-image-0.4.1 + https://www.linuxfromscratch.org/blfs/view/git/x/xcb-util-image.html xcb-util-renderutil-0.3.10 + https://www.linuxfromscratch.org/blfs/view/git/x/xcb-util-renderutil.html xcb-util-cursor-0.1.4 + https://www.linuxfromscratch.org/blfs/view/git/x/xcb-util-cursor.html util-macros-1.20.1 + https://www.linuxfromscratch.org/blfs/view/git/x/util-macros.html xcb-util-keysyms-0.4.1 + https://www.linuxfromscratch.org/blfs/view/git/x/xcb-util-keysyms.html xcb-util-wm-0.4.2 + https://www.linuxfromscratch.org/blfs/view/git/x/xcb-util-wm.html Wireshark not work through VNC + https://forums.kali.org/archived/showthread.php?52466-Wireshark-not-work-through-VNC Debian -- sid の tigervnc-standalone-server パッケージに関する詳細 + https://packages.debian.org/ja/sid/tigervnc-standalone-server