这是尝试使用 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 上发布问答。希望它不仅对我有帮助:-)。

最佳答案

问题实际上在于 cx_freeze 尝试将 uic 子模块用于 Python 2,而不是 3,并且在其中一个文件中遇到 Py3 不兼容的语法。解决方法很简单:

找到 uic 目录,它应该位于 your_python_dir\Lib\site-packages\PyQt4\uic 。那里有两个目录: port_v2port_v3 。重命名第一个,例如重命名为 port_v2_ 。我认为在使用 Python2-rename v3 时可能会出现类似的问题。无论如何,这将导致 cx_freeze 找到正确版本的 uic 并且脚本应该正确构建。

关于python - 在 PyQt 应用程序上使用 cx_freeze 时出现语法错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20590113/

10-12 19:13