使用auto-py-to-exe打包Python3.9+Numpy+Sklearn程序报错求助
解决Python打包KMeans程序的两个问题:numpy警告与sklearn模块缺失
关于numpy.array_api实验性模块的警告
- 这个警告只是numpy提示
array_api子模块还处于实验开发阶段,完全不影响程序功能和打包结果,可以直接忽略。 - 要是看着警告闹心,在你的Python脚本开头加几行代码过滤掉:
import warnings warnings.filterwarnings("ignore", category=FutureWarning, module="numpy.array_api")
解决sklearn.metrics._pairwise_distances_reduction._datasets_pair缺失的问题
这是因为auto-py-to-exe依赖的PyInstaller没自动识别到sklearn的这个私有内部模块,得手动指定隐藏导入,和系统环境变量没关系,别白忙活环境变量了。
方法一:用auto-py-to-exe可视化配置添加
- 打开auto-py-to-exe,找到Hidden Imports(隐藏导入)输入框
- 输入
sklearn.metrics._pairwise_distances_reduction._datasets_pair,如果后续打包还提示其他模块缺失,直接把模块名加到这里就行 - 重新点击打包按钮生成exe
方法二:手动编写PyInstaller spec文件(适合熟悉命令行的用户)
- 先在命令行运行
pyinstaller --onefile 你的脚本文件名.py,生成对应的.spec文件 - 打开这个spec文件,找到
hiddenimports参数,把缺失的模块加进去,修改后类似:
a = Analysis( ['你的脚本文件名.py'], pathex=[], binaries=[], datas=[], hiddenimports=['sklearn.metrics._pairwise_distances_reduction._datasets_pair'], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=None, noarchive=False, )
- 最后用spec文件打包:
pyinstaller 你的脚本文件名.spec
内容的提问来源于stack exchange,提问作者cansado
相关产品推荐
相关产品推荐

