我正在处理一个非常奇怪的问题。基本上,我正在尝试使用PyQt5+Python3.3+Cx_Freeze4.3.2创建一个简单的窗口应用程序。当调用Python时,问题运行得非常完美:
python test.py
现在是关于基础setup.py与cx_freeze的第二部分:
import sys
from cx_Freeze import setup, Executable
base = None
if sys.platform == 'win32':
base = 'Win32GUI'
options = {
'build_exe': {
'includes': 'atexit'
}
}
executables = [
Executable('test.py', base=base)
]
setup(name='test',
version='0.1',
description='test',
options=options,
executables=executables
)
构建它:
python test.py build
以下文件夹已创建:
build/exe.win32-3.3:
/platforms
/imageformats
test.exe
icudt49.dll
icuin49.dll
icuuc49.dll
libGLESv2.dll
library.zip
PyQt5.QtCore.pyd
PyQt5.QtGui.pyd
PyQt5.QtWidgets.pyd
python33.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll
sip.pyd
unicodedata.pyd
_bz2.pyd
现在运行test.exe时一切都正常。
当我把构建文件夹复制到其他电脑上时出现了问题。当我运行test.exe时,会弹出一个错误提示框:
此应用程序无法启动,因为找不到或加载不了QT平台插件“windows”。可用的平台插件有:minimal,offscreen,windows。重新安装此应用程序可能会解决此问题。
根据我所读的所有内容,这是关于平台上的dll, .exe找不到内部的qwindow.dll。为什么只有在其他PC(Win7)上发生这种情况?开发PC(Win7)正常工作。为了调试它并确保使用的qwindow.dll是平台/中的那个,在我的电脑上将文件夹重命名为平台FOO/并尝试运行test.exe,现在在dev PC上出现了相同的问题,因此dll在正确的文件夹中,将其重命名回平台/,一切正常。如果操作系统相同,文件夹只是开发PC上的简单副本,为什么其他PC不能正常工作,真是奇怪!
我查阅谷歌和大量资料,但无法找出问题所在。如果有人可以帮助的话 ;)