Frage

In the past, I've used pycompiler (or 'pyinstaller') to compile my programs that use the PyQt4 framework to executable code, simply because py2exe.
I have switched computers recently and have not yet managed to compile my PyQt4 programs on it!

In this computer, I have set an environment variable %pycompile% that has the directory of the pyinstaller.py file.

Here is the code I plug into the cmd.exe, that is working with python code NOT IMPORT PYQT4.

python %pycompile% --noconsole myscript.pyw

However, when I try to compile my PyQt4 based program, I get a Syntax Error that originates (by my interpretation) from inside a python file imported by pyinstaller.py when trying to compile PyQt4 programs. "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

I am using the same build (216) of pycompile that I used to on my old computer. They both run 32 bit Windows with 32 bit python 2.7.2.

All help wanted!
(I'm freaking out that my MASSIVE programming project can't be compiled!)

I've read quite a few Stack questions about pyinstaller errors with PyQt, but not my particular error!

Thanks!

My code begins with:

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

and ends with:

sys.exit(ApplicationRun.exec_())

python 2.7.2 (32 bit)
pycompile build (216)
PyQt4 (4.5)
Windows 7 (32 bit)

War es hilfreich?

Lösung

Fixed as by Avaris' shared suggestion.
http://code.google.com/p/mpmath/issues/detail?id=204

Andere Tipps

It seems that pyinstaller is using Python 3 because exec_ = exec is legal only in Python 3 and also exec_py3.py is in the traceback. Try giving an option to pyinstaller to tell it to use Python 2.7.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top