Pour activer le support jpeg dans une application PyQT, vous devez inclure manuellement le qjpeg4.dll
.
Cela fonctionne très bien lorsque les fichiers dll et pyd ne sont pas regroupés dans l'exe final. Par exemple avec py2exe vous pouvez effectuer les opérations suivantes:Le support pyqt jpeg ne fonctionne pas sous forme groupée
DATA=[('imageformats',['C:\\Python26/Lib/site-packages/PyQt4/plugins/imageformats/qjpeg4.dll'])]
setup(console=[{"script":"cycotic.py"}],
data_files = DATA,
options={"py2exe":{
"includes":["sip"],
"excludes":MODULE_EXCLUDES,
"bundle_files":3,
"compressed":False,
"xref":True}},
zipfile=None)
Cependant, si vous faites la même chose, et vous regroupez le dll dans l'exe (en utilisant "bundle_files":1
), il échoue avec le message suivant:
QObject::moveToThread: Current thread (0x3a16608) is not the object's thread (0x
2dddaf8).
Cannot move to target thread (0x2dddaf8)
QObject::moveToThread: Current thread (0x3a16608) is not the object's thread (0x
2dddaf8).
Cannot move to target thread (0x2dddaf8)
QObject::moveToThread: Current thread (0x3a16608) is not the object's thread (0x
2dddaf8).
Cannot move to target thread (0x2dddaf8)
QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::end: Painter not active, aborted
QPixmap::scaled: Pixmap is a null pixmap
Comment puis-je regrouper l'application correctement?
Modified pyqt -> PyQt4 pour avoir un nom de paquet valide, mais il a échoué. Apparemment, PyQt4 n'aime pas être inclus de cette façon. Il échoue avec: erreur: compilation 'C: \ Python26 \ lib \ site-packages \ PyQt4 \ uic \ port_v3 \ proxy_base.py' a échoué SyntaxError: non valide (proxy_base.py, ligne 4) – shodanex
C'est bug dans proxy_base.py? ajoutez proxy_base à vos Excludes et voyez s'il construit –