Python vitualenv环境下用pyinstaller打包exe程序,及报错解决:No module named ‘sklearn.metrics,xgboost.libpath

文章描述了在使用PyInstaller进行Python程序打包时遇到的问题,包括因未使用虚拟环境导致的包大小过大,以及打包后运行时模块找不到(sklearn和XGBoost)的错误。通过修改.spec文件添加隐藏导入和将XGBoost库放入执行文件目录,最终解决了程序运行闪退的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:之前直接用命令打包,默认的是系统的python环境,没有用到虚拟环境,打包出来会特别大一个多G。
1.cd E:\Users\13626\PycharmProjects\pythonProject3\venv\Scripts
(虚拟环境项目下)
2.activate 激活
在这里插入图片描述
3.cd E:\Users\13626\PycharmProjects\pythonProject3
打包:
在这里插入图片描述
4.
打包完成
在这里插入图片描述
5.dist文件夹中找到打好的包,运行exe,弹命令窗口后闪退。
于是到cmd命令行运行:
发现报错:ModuleNotFoundError: No module named ‘sklearn.metrics._pairwise_distances_reduction._datasets_pair’
在这里插入图片描述
解决方法:在.spec文件里面修改
hiddenimports=[‘sklearn.metrics._pairwise_distances_reduction._datasets_pair’,‘sklearn.metrics._pairwise_distances_reduction._middle_term_computer’]
分别对应两个no model name报错:sklearn.metrics._pairwise_distances_reduction._datasets_pair’,
‘sklearn.metrics._pairwise_distances_reduction._middle_term_computer’
6.pyinstaller XX.spec
运行还是闪退,到cmd运行:
在这里插入图片描述
报错:
xgboost.libpath.XGBoostLibraryNotFound: Cannot find XGBoost Library in the candidate path. List of candidates:

  • E:\Users\13626\PycharmProjects\pythonProject3\dist\fadsystem2\xgboost\lib\xgboost.dll
  • E:\Users\13626\PycharmProjects\pythonProject3\dist\fadsystem2\xgboost…\lib\xgboost.dll
  • E:\Users\13626\PycharmProjects\pythonProject3\dist\fadsystem2\lib\xgboost.dll
  • E:\Users\13626\PycharmProjects\pythonProject3\dist\fadsystem2\xgboost…/…/windows/x64/Release/xgboost.dll
  • E:\Users\13626\PycharmProjects\pythonProject3\dist\fadsystem2\xgboost./windows/x64/Release/xgboost.dll
    XGBoost Python package path: E:\Users\13626\PycharmProjects\pythonProject3\dist\fadsystem2\xgboost
    sys.prefix: E:\Users\13626\PycharmProjects\pythonProject3\dist\fadsystem2
    See: https://xgboost.readthedocs.io/en/latest/build.html for installing XGBoost.

到E:\Users\13626\PycharmProjects\pythonProject3\venv\Lib\site-packages文件夹里面找到XGboost文件夹放到你的exe文件目录下。
在这里插入图片描述

成功运行!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值