首页 > 解决方案 > Matplotlib pyinstaller 错误执行失败

问题描述

我生成的 .exe 无法使用 matplotlib 程序执行。

54 信息:PyInstaller:4.0 54 信息:Python:3.7.8rc1 57 信息:平台:Windows-10-10.0.18362-SP0 58 信息:写入 C:\Users\vnareshk\AppData\Local\Programs\Python\Python37\Scripts \Chart.spec 59 信息:UPX 不可用。61 信息:使用路径扩展 PYTHONPATH ['c:\Users\vnareshk\Desktop\UPH\pythonProject', 'C:\Users\vnareshk\AppData\Local\Programs\Python\Python37\Scripts'] 69 信息:检查分析 69信息:构建分析,因为 Analysis-00.toc 不存在 70 信息:初始化模块依赖关系图... 73 信息:缓存模块图挂钩... 86 信息:分析 base_library.zip ... 1622 信息:处理预查找模块路径挂钩 distutils 来自 'c:\users\vnareshk\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\hooks\pre_find_module_path\hook-distutils.py'。1624 信息:distutils:重定向到非 venv 目录 'c:\users\vnareshk\appdata\local\programs\python\python37\lib' 2624 信息:缓存模块依赖关系图... 2711 信息:运行分析 Analysis-00.toc 2726 信息:添加Microsoft.Windows.Common-Controls 到 c:\users\vnareshk\appdata\local\programs\python\python37\python.exe 所需的最终可执行文件的依赖程序集 2785 信息:分析 c:\Users\vnareshk\Desktop\UPH\ python项目\图表。3339 信息:处理来自 'c:\users\vnareshk\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\hooks\pre_find_module_path\hook-site.py' 的预查找模块路径挂钩站点。3340 信息:站点:重定向到 fake-dir 'c:\users\vnareshk\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\fake-modules' 6847 信息:处理预安全导入模块挂钩setuptools.extern.六。从 'c:\users\vnareshk\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\hooks\pre_safe_import_module\hook-setuptools.extern.six.moves.py' 移动。10194 信息:处理安全前导入模块钩子 6.moves 从 'c:\users\vnareshk\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\hooks\pre_safe_import_module\hook-six.moves。 py'。12483 信息:处理模块挂钩... 12483 信息:从 'c:\users\vnareshk\appdata\local\programs\python\python37\lib\site-packages\_pyinstaller_hooks_contrib\hooks 加载模块挂钩 'hook-certifi.py' \stdhooks'... 12491 信息:从 'c:\users\vnareshk\appdata\local\programs\python\python37\lib\site-packages\_pyinstaller_hooks_contrib\hooks\stdhooks' 加载模块挂钩 'hook-pycparser.py' ... 12492 信息:加载模块挂钩''matplotlib.backends' 中的 macosx' (c:\users\vnareshk\appdata\local\programs\python\python37\lib\site-packages\matplotlib\ backends_init.py)13873 信息:Matplotlib 后端“nbAgg”:忽略没有名为“IPython”的模块 14206 信息:Matplotlib 后端“Qt4Agg”:忽略无法导入任何 qt 绑定 14456 信息:Matplotlib 后端“Qt4Cairo”:忽略的 cairo 后端需要 pycairo >=1.11.0 或安装了 cairocffiis 14776 信息:Matplotlib 后端“Qt5Agg”:忽略无法导入任何 qt 绑定 15020 信息:Matplotlib 后端“Qt5Cairo”:忽略的 cairo 后端要求安装 pycairo>=1.11.0 或 cairocffiis 15467 信息: Matplotlib 后端“TkAgg”:添加 15902 信息:Matplotlib 后端“TkCairo”:忽略的 cairo 后端要求安装 pycairo>=1.11.0 或 cairocffiis 16314 信息:Matplotlib 后端“WebAgg”:添加 16733 信息:Matplotlib 后端“WX”:忽略了没有名为“wx”的模块 16975 信息:Matplotlib 后端“WXAgg”:忽略了没有名为“wx”的模块 17218 信息:Matplotlib 后端“WXCairo”:忽略了没有名为“wx”的模块 17529 信息:Matplotlib 后端“agg”:添加了 17772信息:Matplotlib 后端“cairo”:忽略的 cairo 后端要求安装 pycairo>=1.11.0 或 cairocffiis 18185 信息:Matplotlib 后端“pdf”:添加 18604 信息:0 或 cairocffiis 已安装 18185 信息:Matplotlib 后端“pdf”:添加 18604 信息:0 或 cairocffiis 已安装 18185 信息:Matplotlib 后端“pdf”:添加 18604 信息:
Matplotlib 后端“pgf”:添加 18911 信息:Matplotlib 后端“ps”:添加 19226 信息:Matplotlib 后端“svg”:添加 19649 信息:
来自 'c:\users\vnareshk\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\hooks'... 20911 信息:处理来自 'c:\users\ 的预安全导入模块挂钩 win32com vnareshk\appdata\local\programs\python\python37\lib\site-packages\_pyinstaller_hooks_contrib\hooks\pre_safe_import_module\hook-win32com.py'。20980 警告:未找到隐藏的导入“pkg_resources.markers”!20981 信息:不包括导入 'main ' 20983 INFO: 删除 main的导入寻找动态库 23468 信息:寻找鸡蛋 23469 信息:使用 Python 库 c:\users\vnareshk\appdata\local\programs\python\python37\python37.dll 23471 信息:找到绑定重定向:[] 23480 信息:写的警告到 C:\Users\vnareshk\AppData\Local\Programs\Python\Python37\Scripts\build\Chart\warn-Chart.txt 23603 信息:图形交叉引用写入 C:\Users\vnareshk\AppData\Local\Programs \Python\Python37\Scripts\build\Chart\xref-Chart.html 23664 信息:检查 PYZ 23665 信息:构建 PYZ,因为 PYZ-00.toc 不存在 23667 信息:构建 PYZ (ZlibArchive) C:\Users\vnareshk\ AppData\Local\Programs\Python\Python37\Scripts\build\Chart\PYZ-00.pyz 25350 信息:构建 PYZ (ZlibArchive) C:\Users\vnareshk\AppData\Local\Programs\Python\Python37\Scripts\build\ Chart\PYZ-00.pyz 成功完成。25386 信息:检查 PKG 25386 信息:构建 PKG,因为 PKG-00.toc 不存在 25388 信息:构建 PKG(CArchive)PKG-00.pkg 33608 信息:构建 PKG(CArchive)PKG-00.pkg 已成功完成。33643 信息:引导加载程序 c:\users\vnareshk\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\bootloader\Windows-64bit\runw.exe 33643 信息:检查 EXE 33647 信息:构建 EXE,因为 EXE -00.toc 不存在 33648 信息:从 EXE-00.toc 构建 EXE 33648 信息:将存档附加到 EXE C:\Users\vnareshk\AppData\Local\Programs\Python\Python37\Scripts\dist\Chart.exe 33674信息:从 EXE-00.toc 构建 EXE 已成功完成。

这是我的代码:

import PySimpleGUI as sg
import matplotlib.pyplot as plt
def draw_plot():
    plt.plot([0.1, 0.2, 0.5, 0.7,0.2])
    plt.show(block=False)
layout = [[sg.Button('Plot'), sg.Cancel(), sg.Button('Popup')]]
window = sg.Window('Have some Matplotlib....', layout)
while True:
    event, values = window.read()
    if event in (sg.WIN_CLOSED, 'Cancel'):
        break
    elif event == 'Plot':
        draw_plot()
    elif event == 'Popup':
        sg.popup('Yes, your application is still running')
window.close()

标签: pythonpython-3.xmatplotlibpysimplegui

解决方案


我遇到过这样的问题。这是我的建议:

首先,像这样编译你的代码

pyinstaller -F your_script.py

这将编译为 .exe 并在后台打开一个调试窗口,该窗口将显示后续步骤所需的信息。

接下来,找到并运行您的 .exe。在脚本失败之前,您将在调试窗口中看到导致崩溃的错误。我最近看到的最大罪魁祸首是 pkg_resources.py2_warn导入错误。

最后,在代码顶部添加一个 import 语句,强制导入导致 pyinstaller 构建错误 .exe 的任何内容。例如,由于我遇到的 pkg_resources 错误,我最终添加了:

import pkg_resources.py2_warn

现在它可以正确编译并且可执行文件可以正常工作。


推荐阅读