matplotlib 和 cx_freeze 问题

Issue with matplotlib and cx_freeze

我正在尝试冻结一个基于控制台的程序,该程序使用 matplotlib.pyplot 来生成和保存绘图。 (我不需要在保存之前预览或查看绘图。)这是我的 setup.py 脚本:

from cx_Freeze import setup, Executable
import os

os.environ['TCL_LIBRARY'] = "C:\Program Files\Anaconda3\tcl\tcl8.6"
os.environ['TK_LIBRARY'] = "C:\Program Files\Anaconda3\tcl\tk8.6"

setup(name='FLOUResence.exe',
    version='0.1',
    options = {"build_exe": {"packages":["pandas", "numpy", "scipy", "matplotlib"]}
           },
executables = [Executable(script='caller.py', targetName='FLOUResence.exe', 
icon="icon.ico", base='Console')]
)

我可以编译程序,但是当我 运行 绘图模块时 returns 出现以下错误:

This application failed to start because it could not find or load the Qt platform plugin "windows" in "".
Reinstalling the application may fix this problem.

据我所知,因为 matplotlib 想要 load/use Qt GUI,但因为它是一个控制台应用程序 cx_freeze 不加载 Qt?这是对问题的正确解释吗?关于如何解决这个问题有什么想法吗?

您需要将 Qt 平台插件添加到您的分发目录。试一试,将 PyQt 安装的 Library\plugins\platforms 复制到您的 package/dist 目录。如果这对您有用,您可以在 include_files 构建选项中添加该目录。我正在使用 miniconda,所以平台目录位于 c:\miniconda\Library\plugins.

setup(name='FLOUResence.exe',
    version='0.1',
    options = {
        "build_exe": {"packages":["pandas", "numpy", "scipy", "matplotlib"],
                      "include_files": [r'c:\miniconda\Library\plugins\platforms']}
    },
    executables = [Executable(script='caller.py', targetName='FLOUResence.exe', 
                   icon="icon.ico", base='Console')]
)