6

我正在兜圈子,发生了一件非常奇怪的事情。基本上我正在尝试使用 PyQt5+python3.3+cx_freeze4.3.2 的简单窗口应用程序。问题运行完美调用python:

python test.py

现在是 cx_freeze 的基本 setup.py 的第二部分:

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

创建以下文件夹:

构建/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 一切正常。

当我将构建文件夹复制到其他 PC 时,问题就来了。运行 test.exe 时弹出错误

此应用程序无法启动,因为它无法找到或加载 QT 平台插件“windows”。

可用的平台插件有:minimal、offscreen、windows。

重新安装应用程序可能会解决此问题

根据我阅读的所有内容,它是关于平台上的 dll/.exe 在里面找不到 qwindow.dll。为什么它只发生在其他PC(win7)?开发PC(win7)工作正常。为了调试它并确保使用的 qwindow.dll 是 plataforms/ 里面的那个,我将文件夹重命名为 plataformFOO/ 并尝试运行 test.exe,现在在开发 PC 中出现同样的问题,因此,dll 位于正确的文件夹中,将其重命名为平台/并且一切正常。如果操作系统相同并且文件夹是开发 PC 上的文件夹的简单副本,为什么在其他 PC 上不工作。

我谷歌,阅读了大量的东西,但无法找出问题所在。如果有人可以提供帮助;)

4

1 回答 1

0

我遇到了同样的问题,我正在使用 PyQt5 和 cx_Freeze 5.0.1 运行 Anaconda 4.4.0 Python 2.7.13

将 anaconda/library/plugin/platforms 目录复制到包含 .exe 的目录中。

运行可执行文件,它应该可以工作

于 2017-12-18T17:56:59.997 回答