🤔

【Python】WSL2 の ubuntuで Matplotlibを使い、画像を表示できない... X Serverの設定の問題だった

2024/09/27に公開

背景

Matplotlibのimshow()を使って画像を表示するプログラムをつくっていたのですが、コマンドラインで実行した後に、いくらたっても画像は表示されませんでした。

最初は、imshow()や、plt.show()の使い方に問題があるのかと思い、いろいろと探っていたのですが、じつは、Windowsで画像を表示するX Serverの設定自体がおかしかったことが分かりました。

ここに気づくのに時間がかかってしまったので、反省...

結論:X Serverの設定がおかしかった

描画用の「X Server」はすでにインストール済みで、いままでも使用したことがあったので安心していたのですが、これが盲点でした。

「X Server」を立ち上げて、以下のサイトに載ってある流れのとおりに設定すると、Matplotlibのimshow()を使って画像を表示することができるようになりました。

https://dev.classmethod.jp/articles/wsl-x-window/

おそらくですが、設定のなかの「Disable access control」にチェックが入っておらず、ubuntuからのアクセスを「X Server」が受け付けていなかったのが、描画ができない原因だったのだと思います。(いままでできていたのに、なんでだろう???)

そのほかのケース

ぼくの場合、すでにインストール済みだった「X Server」の設定を変えるだけで、画像の表示ができるようになりましたが、ほかにもWSL上でMatplotlibをつかった画像の描画ができない様々なケースがあるようです。

調べるなかで見つけた解決法を以下に張っておきます。

https://til.swfz.io/entries/wsl2_with_x/

https://ai-gaminglife.hatenablog.com/entry/2019/04/29/204841

https://qiita.com/ryoi084/items/c4339996c50c0cf39df4
→そもそもの「X Server」のインストール

https://touch-sp.hatenablog.com/entry/2021/04/23/082702

Discussion