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

cx_Freeze打包Python程序运行报numpy _multiarray_umath DLL加载失败错误

cx_Freeze打包numpy相关程序跨设备运行失败解决方案

错误原因

该报错是cx_Freeze打包时遗漏了numpy运行必需的依赖DLL导致:开发环境本地预装了对应版本VC++运行时、numpy关联C扩展DLL,所以程序运行正常;无相关依赖的设备运行时无法加载必需文件,触发_multiarray_umath导入失败。

解决步骤

  • 确认架构一致性
    当前打包使用的是32位Python3.8,生成的是32位程序,需确保目标设备支持32位程序运行(64位Windows默认兼容32位程序,32位设备不能运行64位程序)。
  • 修改cx_Freeze打包配置,强制包含numpy依赖
    修改setup.py打包脚本,显式指定打包numpy的全部核心文件,示例配置如下:
import sys
import os
from cx_Freeze import setup, Executable
import numpy

# 收集numpy核心目录的所有文件
numpy_core_path = os.path.dirname(numpy.core.__file__)
build_options = {
    "packages": ["numpy"],
    "include_files": [(numpy_core_path, "numpy/core")],
    # 可额外添加搜索到的VC++运行时DLL路径
}

base = "Console" if sys.platform == "win32" else None
setup(
    name="PLC-Log",
    version="1.0",
    description="PLC日志工具",
    options={"build_exe": build_options},
    executables=[Executable("main.py", base=base)]
)
  • 补充VC运行时依赖
    numpy 1.21.1依赖32位版本的VC
    2015-2019运行时,可选择两种方式处理:
    • 打包时将本地32位Python目录下的msvcp140.dll、vcruntime140.dll、vcruntime140_1.dll加入include_files列表一同打包
    • 直接在目标设备上安装对应32位版本的VC++ Redistributable运行时安装包
  • 版本降级验证
    如果以上操作仍未解决问题,可将numpy版本降级至1.19.5,该版本依赖更简单,打包兼容性更好,执行pip install numpy==1.19.5后重新打包测试即可。
  • 打包后预验证
    打包完成后,将生成的exe目录复制到本地无Python环境的路径下运行测试,确认无报错后再发送到目标设备运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:09:04