python - Error al compilar PyQt4 con Pyinstaller
compilation (2)
En el pasado, he usado pycompiler (o ''pyinstaller'') para compilar mis programas que usan el framework PyQt4 en código ejecutable, simplemente porque py2exe.
¡He cambiado computadoras recientemente y todavía no he logrado compilar mis programas PyQt4!
En esta computadora, he establecido una variable de entorno% pycompile% que tiene el directorio del archivo pyinstaller.py.
Aquí está el código que conecto al cmd.exe, que está funcionando con el código python NOT IMPORT PYQT4.
python %pycompile% --noconsole myscript.pyw
Sin embargo, cuando intento compilar mi programa basado en PyQt4, obtengo un error de sintaxis que se origina (según mi interpretación) desde dentro de un archivo python importado por pyinstaller.py cuando se intenta compilar programas PyQt4. "exec_ = exec"
E:/ChemCalc ULTIMATE/ChemCalc ULTIMATE>python %pycompile% Penny.pyw
I: skip Configure.py, use existing config C:/Python27/PyCompile/config.dat
wrote E:/ChemCalc ULTIMATE/ChemCalc ULTIMATE/Penny.spec
I: Dependent assemblies of C:/Python27/python.exe:
I: x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none
checking Analysis
building Analysis because outAnalysis0.toc non existent
running Analysis outAnalysis0.toc
Analyzing: C:/Python27/PyCompile/support/_mountzlib.py
Analyzing: C:/Python27/PyCompile/support/useUnicode.py
Analyzing: Penny.pyw
Syntax error in exec_py3.py
(''invalid syntax'', (''exec_py3.py'', 1, 12, ''exec_ = exec/n''))
Traceback (most recent call last):
File "C:/Python27/PyCompile/pyinstaller.py", line 187, in <module>
main(parser)
File "C:/Python27/PyCompile/pyinstaller.py", line 76, in main
run_build(opts, args, spec_file)
File "C:/Python27/PyCompile/pyinstaller.py", line 52, in run_build
Build.main(spec_file, configfilename=opts.configfile)
File "C:/Python27/PyCompile/Build.py", line 1472, in main
build(specfile)
File "C:/Python27/PyCompile/Build.py", line 1429, in build
execfile(spec)
File "E:/ChemCalc ULTIMATE/ChemCalc ULTIMATE/Penny.spec", line 3, in <module>
pathex=[''E://ChemCalc ULTIMATE//ChemCalc ULTIMATE''])
File "C:/Python27/PyCompile/Build.py", line 347, in __init__
self.__postinit__()
File "C:/Python27/PyCompile/Build.py", line 298, in __postinit__
self.assemble()
File "C:/Python27/PyCompile/Build.py", line 416, in assemble
analyzer.analyze_script(script)
File "C:/Python27/PyCompile/mf.py", line 572, in analyze_script
return self.analyze_r(''__main__'')
File "C:/Python27/PyCompile/mf.py", line 466, in analyze_r
newnms = self.analyze_one(name, nm, imptyp, level)
File "C:/Python27/PyCompile/mf.py", line 525, in analyze_one
mod = self.doimport(nm, ctx, fqname)
File "C:/Python27/PyCompile/mf.py", line 587, in doimport
mod = parent.doimport(nm)
File "C:/Python27/PyCompile/mf.py", line 761, in doimport
mod = self.subimporter.getmod(nm)
File "C:/Python27/PyCompile/mf.py", line 355, in getmod
mod = owner.getmod(nm)
File "C:/Python27/PyCompile/mf.py", line 117, in getmod
co = compile(string.replace(stuff, "/r/n", "/n"), py[0], ''exec'')
File "exec_py3.py", line 1
exec_ = exec
^
SyntaxError: invalid syntax
Estoy usando la misma compilación (216) de pycompile que solía usar en mi computadora vieja. Ambos ejecutan Windows de 32 bits con 32 bit python 2.7.2.
Toda la ayuda quería!
(¡Me da miedo que mi proyecto de programación MASSIVE no pueda compilarse!)
He leído bastantes preguntas de Pila sobre errores de Pyinstaller con PyQt, ¡pero no es mi error en particular!
¡Gracias!
Mi código comienza con:
import sys
import getpass
import hmac
import random
import shutil
from PyQt4 import QtGui, QtCore
from RegMenu import Ui_RegristrationMenu
from ChemWindow import Ui_ChemWindow
from ReactionClass import ReactionElement
from StoichUnitSelectionClass import Ui_StoichUnitSelection
from VisualTool import Ui_Aesthetics_Tool
import decimal
import sympy
import math
y termina con:
sys.exit(ApplicationRun.exec_())
Python 2.7.2 (32 bit)
creación de pycompile (216)
PyQt4 (4.5)
Windows 7 (32 bit)
Corregido como por la sugerencia compartida de Avaris.
http://code.google.com/p/mpmath/issues/detail?id=204
Parece que pyinstaller está usando Python 3 porque exec_ = exec
es legal solo en Python 3 y también exec_py3.py está en el rastreo. Intenta darle una opción al instalador de aplicaciones para que diga que use Python 2.7.