当尝试使用PyQt4从Python 3脚本构建.exe文件时,这是一个非常烦人的问题。我认为它与使用uic
模块进行动态加载.ui
文件有关。
cx_freeze
返回:
File "E:\Python32_32\lib\site-packages\cx_Freeze\finder.py", line 366, in _LoadModule
module.code = compile(codeString, path, "exec")
File "E:\Python32_32\lib\site-packages\PyQt4\uic\port_v2\load_plugin.py", line 41
except Exception, e:
^
SyntaxError: invalid syntax
前段时间我已经解决了这个问题,但我最近又遇到过这个问题。在网上寻找解决方案并不容易,所以我决定在SO上发布Q& A.希望它不仅对我有用: - )。
答案 0 :(得分:9)
问题在于cx_freeze
尝试对Python 2使用uic
子模块,而不是3,并在其中一个文件中遇到Py3不兼容的语法。解决方案非常简单:
查找uic
目录,它应位于your_python_dir\Lib\site-packages\PyQt4\uic
。那里有两个目录:port_v2
和port_v3
。重命名第一个,例如port_v2_
。我认为在使用Python2重命名v3
时会发生类似的问题。无论如何,这将导致cx_freeze
找到uic
的正确版本,并且脚本应该正确构建。