Problème lors de la construction d'un script PyQt avec py2exe (QtCore)
Question
Je suis en train de faire un simple exécutable bonjour monde python app dans les fenêtres IUG à l'aide de PyQt. J'ai donc fait le fichier pyqt.py
import sys
from PyQt4.QtGui import *
app = QApplication(sys.argv)
button = QPushButton("Hello World", None)
button.show()
app.exec_()
J'ai essayé d'utiliser py2exe avec le script setup.py
suivant:
from py2exe.build_exe import py2exe
from distutils.core import setup
setup( console=[{"script": "pyqt.py"}] )
(j'ai eu l'erreur de No module named sip
d'abord, mais il est résolu grâce à la page Py2exeAndPyQt
).
Maintenant, j'ai l'exécutable et lorsque je tente de l'exécuter, je reçois l'erreur suivante:
Traceback (most recent call last):
File "pyqt.py", line 2, in <module>
File "PyQt4\QtGui.pyc", line 12, in <module>
File "PyQt4\QtGui.pyc", line 10, in __load
ImportError: No module named QtCore
Comment puis-je résoudre ce problème? TIA
La solution
Vous pouvez faire quelque chose comme ça, vous n'avez pas besoin d'importation *.
py2exe_opciones = {'py2exe': {"includes":["sip"]}}
script = [{"script":"pyqt.py"}]
setup(windows=script,options=py2exe_opciones)
Et maintenant devrait fonctionner le programme. J'ai eu la même erreur.
Autres conseils
Ajouter from PyQt4.QtCore import *
à pyqt.py.
Je ne sais pas pourquoi il n'a pas été inclus automatiquement, mais je pense qu'il a quelque chose à voir avec QtCore seulement utilisé par QtGui, qui est un C ++ lib ... Comme, py2exe ne détecte automatiquement les dépendances de python ... donc, vous devez importer manuellement.
est un exemple
from setuptools import setup
import py2exe
from glob import glob
SETUP_DICT = {
'windows': [{
'script': 'main.py',
}],
'zipfile': 'lib/library.zip',
'data_files': (
('', glob(r'C:\Windows\SYSTEM32\msvcp100.dll')),
('', glob(r'C:\Windows\SYSTEM32\msvcr100.dll')),
),
'options': {
'py2exe': {
'bundle_files': 3,
'includes': ['sip', 'PyQt4.QtCore'],
},
}
}
setup(**SETUP_DICT)