You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python脚本转exe遇DLL加载失败:导入_imaging出错求助

解决PyInstaller打包含matplotlib/PIL脚本时的_imaging DLL加载失败问题

问题背景

首次尝试将依赖tkinter、matplotlib、numpy、PIL的Python脚本打包为.exe,脚本在Anaconda命令提示符中可正常运行,但打包后的exe在普通CMD中运行报错:

ImportError: DLL load failed while importing _imaging: The specified module could not be found.

原因分析

  1. 打包环境与运行环境不匹配:脚本依赖的Anaconda环境包含PIL所需的DLL,但打包时未正确收集这些依赖,导致普通环境中缺失文件。
  2. PyInstaller未自动捕获Anaconda环境下PIL的非标准路径DLL文件。
  3. PyInstaller或PIL版本过旧,存在兼容性收集bug。

解决方法

1. 在Anaconda环境内完成打包

必须在脚本可正常运行的Anaconda环境中执行打包,确保PyInstaller能读取到完整依赖:

  • 打开Anaconda Prompt,激活目标环境:conda activate 你的环境名称
  • 执行打包命令,例如:
    pyinstaller --onefile to_TEST.py
    
    (需无控制台界面加--windowed参数,保留控制台则去掉--onefile)

2. 强制收集所有依赖文件

用PyInstaller的--collect-all参数,强制收集pillow和matplotlib的所有关联文件(包括DLL):

pyinstaller --collect-all pillow --collect-all matplotlib --onefile to_TEST.py

3. 更新PyInstaller和Pillow到最新版本

旧版本工具可能存在依赖收集漏洞,在激活的Anaconda环境中执行:

pip install --upgrade pyinstaller pillow

更新完成后重新打包。

4. 手动添加缺失的DLL到打包配置

若上述方法无效,手动指定PIL的DLL路径到.spec文件:

  1. 先执行一次PyInstaller生成.spec文件:pyinstaller to_TEST.py
  2. 打开生成的to_TEST.spec,找到binaries字段,添加PIL的_imaging相关文件路径(替换为你的环境实际路径):
    binaries = [
        (r'C:\Users\c.maujean\anaconda3\envs\你的环境名\Lib\site-packages\PIL\_imaging.cp39-win_amd64.pyd', 'PIL')
    ]
    
  3. 用.spec文件重新打包:pyinstaller to_TEST.spec

5. 禁用未使用的matplotlib模块(可选)

若脚本未用到matplotlib的动画功能,可在导入matplotlib前添加以下代码,避免加载不必要的模块:

import matplotlib
matplotlib.use('TkAgg')
matplotlib.rcParams['animation.embed_limit'] = 0

之后重新打包即可。


内容的提问来源于stack exchange,提问作者Clément Maujean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:30:51