2016/11/25(金) [n年前の日記]
#1 [python] PySideとPyQt4を両方入れているとImageQtがエラーを出す問題
PySide を使って書いていたスクリプトが、エラーを出すようになって悩んだり。
Pillow(PIL)の ImageQt を使うと、PIL の Image を PySide の QImage に変換できる、はずなのだけど、何故か該当行でエラーが出てしまって。こないだまで動いてたのに変だな変だなと。
考えてみたら、各種サンプルを動かすために PyQt4 をインストールしてから、この症状が出始めたような…。試しに PyQt4 をアンインストールしてみたら、エラーが出なくなった。
以下のページで、同様の不具合報告と回答があった。
_python - cannot use imageQt to cast Image to QImage - Stack Overflow
PIL の ImageQt は、PyQt を使ってることを前提に書かれているので、PySide と PyQt の両方が入ってる環境では PyQt のほうを優先して使おうとして、PySide を使ったスクリプトではエラーが出てしまうらしい。
一行入れると問題回避できるかも、と書いてあったので試してみたり。
たしかに、1行入れてみたらエラーが出なかった。とメモ。
Pillow(PIL)の ImageQt を使うと、PIL の Image を PySide の QImage に変換できる、はずなのだけど、何故か該当行でエラーが出てしまって。こないだまで動いてたのに変だな変だなと。
考えてみたら、各種サンプルを動かすために PyQt4 をインストールしてから、この症状が出始めたような…。試しに PyQt4 をアンインストールしてみたら、エラーが出なくなった。
以下のページで、同様の不具合報告と回答があった。
_python - cannot use imageQt to cast Image to QImage - Stack Overflow
PIL の ImageQt は、PyQt を使ってることを前提に書かれているので、PySide と PyQt の両方が入ってる環境では PyQt のほうを優先して使おうとして、PySide を使ったスクリプトではエラーが出てしまうらしい。
一行入れると問題回避できるかも、と書いてあったので試してみたり。
u""" Pillow(PIL)のImageQtについて動作確認. 動作確認 : Windows10 x64 + Python 2.7.12 + PySide 1.2.4 """ from PySide import QtGui import sys from PySide.QtCore import * # NOQA from PySide.QtGui import * # NOQA sys.modules['PyQt4.QtGui'] = QtGui # PyQt4を使わないようにしている from PIL import Image from PIL import ImageQt class MyWidget(QWidget): """main window.""" def __init__(self, *argv, **keywords): """init.""" super(MyWidget, self).__init__(*argv, **keywords) img = Image.open("./tmp_00_default.png") img = img.convert("RGBA") qimg = ImageQt.ImageQt(img) pm = QPixmap.fromImage(QImage(qimg)) lbl = QLabel(self) lbl.setPixmap(pm) self.setLayout(QVBoxLayout()) self.layout().addWidget(lbl) if __name__ == '__main__': app = QApplication(sys.argv) w = MyWidget() w.show() sys.exit(app.exec_())
たしかに、1行入れてみたらエラーが出なかった。とメモ。
[ ツッコむ ]
以上です。