cx_freeze + PyQt5 + python

时间:2013-11-27 14:17:44

标签: python cx-freeze pyqt5

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:-5)

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

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