Problema mientras se construye una secuencia de comandos con PyQt py2exe (QtCore)
Pregunta
Estoy tratando de hacer una aplicación ejecutable de Python GUI hola-mundo simple en las ventanas utilizando pyqt. Así que he hecho el archivo pyqt.py
import sys
from PyQt4.QtGui import *
app = QApplication(sys.argv)
button = QPushButton("Hello World", None)
button.show()
app.exec_()
He intentado utilizar py2exe con la siguiente secuencia de comandos setup.py
:
from py2exe.build_exe import py2exe
from distutils.core import setup
setup( console=[{"script": "pyqt.py"}] )
(tuve el error No module named sip
primera, pero ha resuelto gracias a la página Py2exeAndPyQt
).
Ahora tengo el ejecutable y cuando intento ejecutarlo, me sale el siguiente error:
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
¿Cómo puedo solucionarlo? TIA
Solución
Puede hacer algo como esto, que no es necesario importar *.
py2exe_opciones = {'py2exe': {"includes":["sip"]}}
script = [{"script":"pyqt.py"}]
setup(windows=script,options=py2exe_opciones)
Y ahora el programa debería funcionar. Yo tenía el mismo error.
Aquí puede leer más.
Otros consejos
Añadir a from PyQt4.QtCore import *
pyqt.py.
No estoy seguro de por qué no era auto-incluido, pero yo creo que tiene algo que ver con QtCore único ser utilizado por QtGui, que es un C ++ lib ... Como, py2exe solamente detecta automáticamente las dependencias de pitón ... Así que hay que importar de forma manual.
este es un ejemplo
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)