☰
打包 Python 程序时,出现“没有名为XXX的模块”错误解决办法
2026/10/9 16:32:41 网站建设 项目流程

使用auto-py-to-exe(或者其他打包软件)来打包程序, 在这个时段里头, 某些依赖模块没能被正确识别, 进而也没有包含进入打包之后的程序内, 当启动打包之后的exe 文件, 一般情况下呢, 程序会报错误, 就如同下面图片所展示的那种报错:

打包后启动程序,报告确实XXX模块

Unhandled exception in script Failed to execute script 'main' due to unhandled exception: No module named 'scipy._cyutility' Traceback (most recent call last): File "main.py", line 4, in File "PyInstaller\loader\pyimod02_importers.py", line 457, in exec_module

一、错误原因

这是运用(借助 auto - py - to - exe)进行程序打包时, 致使的典型问题, 起因在于某些依赖模块未被正确识别, 或者没被包含进打包后的程序里。具体而言, scipy.是 scipy 的其中一个内部 C 扩展模块, 于打包进程中未被自动检测出来。要是你碰到的是其他模块, 大概情形也是如此。

二、传统解决解决办法

方法一:添加缺失的隐藏导入( )

SciPy属于那种“隐藏导入”, 就是说, 没办法从代码里边进行静态分析进而得出需要导入这个模块, 所以不会把它打包进去。

你需要告诉 显式地将它加入打包列表。

1. 在 auto-py-to-exe 中添加 :

打开 auto-py-to-exe。

于 “PYZ和EXE ()” 这一部分寻觅 “添加到” 或者 “ ”。发现它们在哪呢, 是在 “PYZ和EXE ()” 部分, 看看有没有 “添加到” 或者 “ ”。

输入以下内容(也可以多行输入多个模块),然后重新打包

scipy._cyutility

方法二:手动修改 .spec 文件(适用于高级用户)

要是你是借助生成.spec文件去进行打包的, 那能够对该文件予以编辑:

# 在 Analysis 阶段添加 hiddenimports a = Analysis( ... hiddenimports=['scipy._cyutility', 'scipy.sparse._csparsetools', 'scipy._lib.messagestream'], ... )

然后重新打包。

三、超简单有效的解决办法

于 py 文件里头, 直接进行显性导入所缺失的模块之操作, 之后重新予以打包就行。情况像是这样:

显性导入缺少的模块

最后: 有时, 诸如tqsdk、、numpy、、scipy这般的库, 会引入诸多动态导入以及C扩展模块, 默认情况下并不会全部涵盖进来。故而建议你在打包此类项目时, 提前预备好一份列表, 或者在py文件中将它们都显性导入进来。

你学会了吗?

(汇报完毕,感谢收看!)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询