我的系统:
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应用程序完美配合)< / p>
\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:
(输出结束 - 没有列表或任何内容)。
那么在何处以及如何加载此插件?
答案 0 :(得分:4)
好的 - 我找到了解决方法:
将qwindows.dll
及其文件夹\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)]
)