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行入れてみたらエラーが出なかった。とメモ。
[ ツッコむ ]
以上です。