4

我的系统:

Windows 7、x64、Python 3.3.1、使用安装程序的 PyQt4 4.10 (py3.3-Qt5.0.1-x64)、cx_freeze 4.3.1 (win-amd64-py3.3)

什么有效:

  • 在终端中导航到..python33\lib\site-packages\cx_freeze\samples文件夹(以及相应的示例文件夹)并执行python setup.py build

  • 这适用于:\simple\tkinter(只是为了确保我没有在其他地方出错)

问题:

  • 但我的目标是获得我的 PyQt4-Project 的可执行文件/包,所以我尝试了相同的\PyQt4示例(顺便说一句。PyQt4app.py 完美地作为 python 应用程序工作)

  • \PyQt4 >>> python setup.py build最初不起作用:运行生成的PyQt4app.exe结果会出错,要求输入丢失的包“re”

  • 随后我在setup.py文件中包含“re”。( options = {"build_exe" : {"includes" : ["atexit", "re"]}})

  • 现在它会生成一个 .exe 而不会引发错误 - 但运行这个 .exe 不会做任何事情,只是沉默......

  • cx_freeze 似乎找到了正确的依赖关系:python33.dll, Qt5Core.dll, Qt5Gui.dll, PyQt4.QtCore.pyd, PyQt4.QtGui.pyd(其中包括:sip、unicodedata 等)存在。

这里setup.py(不变,除了“重新”包括和评论被删除)

import sys

from cx_Freeze import setup, Executable

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(
        name = "simple_PyQt4",
        version = "0.1",
        description = "Sample cx_Freeze PyQt4 script",
        options = {"build_exe" : {"includes" : ["atexit", "re"]}},
        executables = [Executable("PyQt4app.py", base = base)])

有什么建议我哪里出错了吗?哪些额外的信息会有用?

编辑:我设法base = None通过批处理文件设置和运行 .exe 来获得控制台输出。输出是:(Failed to load platform plugin "windows". Available platforms are:输出结束 - 没有列表或任何东西)。

那么在哪里以及如何加载这个插件呢?

4

1 回答 1

4

好的 - 我找到了解决方法:

qwindows.dllWITH 其文件夹\platforms\qwindow.dll..\python33\lib\site-packages\PyQt4\plugins.exe 所在的文件夹中复制。现在它起作用了。

编辑:

setup.py现在看起来像这样,并且似乎也适用于其他情况:

import sys

from cx_Freeze import setup, Executable

base = "Win32GUI"
path_platforms = ( "..\..\..\PyQt4\plugins\platforms\qwindows.dll", "platforms\qwindows.dll" )
build_options = {"includes" : [ "re", "atexit" ], "include_files" : [ path_platforms ]}

setup(
    name = "simple_PyQt4",
    version = "0.1",
    description = "Sample cx_Freeze PyQt4 script",
    options = {"build_exe" : build_options},
    executables = [Executable("PyQt4app.py", base = base)]
    )
于 2013-04-21T15:25:11.810 回答