everyday-study

Docker上でmatplotlibを使う

ビジネスPython超入門という本の機械学習の章に取り組んでいた時、dockerを使っていたため下記のコードの実行時にエラーが出たのでそれの対処のためのメモ

from PyQt5 import QtCore, QtGui, QtWidgets
ImportError: libGL.so.1: cannot open shared object file: No such file or directory

エラーコードの最後のほうで何にやらモジュールがインポートできないと言っていたので調べてみたら次のような記事を見つけた

https://qiita.com/lmond/items/cf72a4a6782b06fde0ac

dockerでのpythonの開発環境を用意したときにAnacondaをインストールしていたことが原因みたい

この記事通りに進めて、次のコマンドを実行したらエラーになった

conda install --channel https://conda.anaconda.org/bpentz pyqt5

何でだろうと少し考えてみたら、単純にインストールすべきOSが違うだけだった

windowsではなくLinuxとするべきだった

そこで、LinuxにPyQt5をインストールする方法を探して、次のコマンドをdocker上で実行すればよいと分かった

sudo apt-get install python3-pyqt5

https://qiita.com/itoppy18/items/340efff6c079a00b04fc

インストール後、pythonインタラクティブシェルで

import PyQt5.QtWidgets

を実行したらエラーが出ることなく、無事に通った

よし!これでグラフを描画できると意気揚々と最初のプログラムを実行したらまた別のエラーが出てきた

raise RuntimeError('Invalid DISPLAY variable')
RuntimeError: Invalid DISPLAY variable

次のコードの最初の2行がリンク先で記載されていたサーバー側で図の作図、出力まで行うようにするもの

https://qiita.com/TomokIshii/items/3a26ee4453f535a69e9e

プログラムを実行すると同じ階層にできる"plot.png"が実行結果となる