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

PyInstaller打包Python脚本生成exe无法找到scipy依赖dll问题求助

解决方案

你遇到的问题根源是Anaconda源安装的scipy 1.2.1依赖Intel MKL数学库的相关DLL,PyInstaller 3.5对Python 2.7环境下的conda类第三方库依赖识别存在缺陷,不会自动采集这些不在site-packages目录下的系统级DLL,导致无Anaconda环境的设备运行时缺少依赖直接崩溃。

步骤1:定位缺失的DLL文件

不需要找不存在的extra-dll文件夹,直接打开你的虚拟环境根目录anaconda3\myenv\,在搜索框搜索以下名称的DLL,全部复制出来:

  • 所有mkl_开头的DLL(比如mkl_core.dll、mkl_intel_thread.dll、mkl_avx.dll等)
  • libiomp5md.dll

步骤2:将DLL加入打包配置

两种可选方案,选任意一种即可:

方案A:命令行直接打包

把刚才找到的所有DLL放到你的Python脚本同级目录下的mkl_dll文件夹中,执行以下打包命令:

pyinstaller -F --add-binary "mkl_dll/*.dll;." 你的脚本名.py

参数说明:

  • -F表示生成单EXE文件,如果需要生成文件夹形式可以去掉该参数
  • --add-binary后的参数中,Windows系统用分号分隔源路径和目标路径,.表示DLL最终和EXE放在同一目录

方案B:修改spec文件配置

  1. 先执行命令生成spec配置文件:
    pyi-makespec 你的脚本名.py
  2. 打开生成的.spec文件,找到Analysis块的binaries参数,修改为如下格式,把你找到的每个DLL都按规则填入:
a = Analysis(
    ['你的脚本名.py'],
    binaries=[
        ('C:/path/to/mkl_core.dll', '.'),
        ('C:/path/to/libiomp5md.dll', '.'),
        # 其他DLL依次按上述格式添加
    ],
    # 其余原有配置保持不变
)
  1. 保存spec文件后执行打包命令:
    pyinstaller 你的脚本名.spec

验证方法

把生成的EXE文件拷贝到没有安装Anaconda、Python的干净Windows设备上运行,确认可以正常输出拟合参数popt的结果即表示修复完成。

内容的提问来源于stack exchange,提问作者throughalfanoir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:54:07