Question

Dans le passé, j'ai utilisé PyCompiler (ou «Pyinstaller») pour compiler mes programmes qui utilisent le framework PYQT4 en code exécutable, simplement parce que Py2EXE.
J'ai changé d'ordinateur récemment et je n'ai pas encore réussi à compiler mes programmes PYQT4 dessus!

Dans cet ordinateur, j'ai défini une variable d'environnement% pycompile% qui a le répertoire du fichier pyinstaller.py.

Voici le code que je branche sur le cmd.exe, qui fonctionne avec le code python et non importe Pyqt4.

python %pycompile% --noconsole myscript.pyw

Cependant, lorsque j'essaie de compiler mon programme basé sur PYQT4, j'obtiens une erreur de syntaxe qui provient (par mon interprétation) à l'intérieur d'un fichier Python importé par pyinstaller.py lorsque vous essayez de compiler les programmes 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

J'utilise la même construction (216) de PyCompile que j'avais l'habitude sur mon ancien ordinateur. Ils exécutent tous les deux des fenêtres 32 bits avec Python 2.7.2 32 bits.

Toutes les aides voulaient!
(Je panique que mon projet de programmation massif ne peut pas être compilé!)

J'ai lu plusieurs questions de pile sur les erreurs de Pyinstaller avec PYQT, mais pas mon erreur particulière!

Merci!

Mon code commence par:

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

Et se termine par:

sys.exit(ApplicationRun.exec_())

Python 2.7.2 (32 bits)
Build PyCompile (216)
Pyqt4 (4.5)
Windows 7 (32 bits)

Était-ce utile?

La solution

Fixé comme par la suggestion partagée d'Avaris.
http://code.google.com/p/mpmath/issues/detail?id=204

Autres conseils

Il semble que Pyinstaller utilise Python 3 parce que exec_ = exec est légal uniquement dans Python 3 et également exec_py3.py est dans le traceback. Essayez de donner une option à Pyinstaller pour lui dire d'utiliser Python 2.7.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top