cx_freeze + PyQt5 + python

问题描述 投票:5回答:2

我在圈子里奔跑,发生了一件非常奇怪的事情。基本上我正在尝试使用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

将创建以下文件夹:

建立/ 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。

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

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

我谷歌,阅读大量的东西,但无法弄清楚问题。如果有人可以提供帮助;)

python cx-freeze pyqt5
2个回答
0
投票

我有同样的问题,我使用PyQt5和cx_Freeze 5.0.1运行Anaconda 4.4.0 Python 2.7.13

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

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


-5
投票

遗憾的是cx_freeze与一些自定义库(我的意思是来自python的非内置模块)不能很好地工作。我在尝试构建TTK对象时遇到了类似的问题(实际上是来自ttk模块的colorchooser)。

你可能想尝试其他编译器,如Compile Python using py2exe in 64 bit machine祝你好运。

© www.soinside.com 2019 - 2024. All rights reserved.