论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
人工智能
›
人工智能
›
llama-cpp-python 程序 Pyinstaller 打包后运行报错(Ru ...
llama-cpp-python 程序 Pyinstaller 打包后运行报错(RuntimeError: Failed ...
饭宝
金牌会员
|
2024-9-19 17:08:41
|
显示全部楼层
|
阅读模式
楼主
主题
699
|
帖子
699
|
积分
2097
报错征象
本人基于 llama-cpp-python 构建了一个领域知识问答程序,并通过 Pyinstaller 打包成一个包含 .exe 运行文件的文件夹(记为 D)。
该 .exe 在本机(打包用的电脑,Windows 11)上运行正常,在把文件夹 D 拷贝到别的五台电脑(Windows 10)上后, .exe 在此中三台电脑上运行正常,但另两台报如下错误:
RuntimeError: Failed to load shared library 'D:\PPLocalChatbot\_internal\llama_cpp\llama.dll':
Failed to load dynlib/dll 'D:\\PPLocalChatbot\\_internal\\llama_cpp\\llama.dll'.
Most likely this dynlib/dll was not found when the application was frozen.
复制代码
本机配置
Windows 11
Python 3.8
llama-cpp-python 0.2.73
Pyinstaller 6.6.0
kernel32.dll 10.0.22621.3527
问题分析
如这里所示,通常 Pyinstaller 打包后的程序报错
无法找到/加载 xx 文件
,大概率是该文件在打包时未被 Pyinstaller 自动参加到指定文件夹引发的。然而这次不是,我已在打包配置文件 .spec 中通过 Analysis.binaries 将 llama.dll 参加到了正确文件夹;此外,其他三台电脑能正常运行也表明了 llama.dll 其实正位于正确的文件夹下。
考虑到有些电脑能跑,有些不行,那大概与电脑版本或环境有关;
在这里看到,该类报错也有大概是 .dll 所依靠别的 .dll 未在目的电脑上找到,可以采用 Dependencies 软件来检测 DLL 文件的依靠情况。
下图是本机利用 Dependencies 检测出的 llama.dll 的依靠情况,通过查找,发现除了 kernel32.dll,别的 DLL 文件均在打包后的文件夹 D 中存在。所以在运行 .exe 文件时,被调用的 llama.dll 会从目的电脑的 C:\Windows\System32 中调用 kernel32.dll。而这个 kernel32.dll 的版本在各电脑中都有所不同,因此 kernel32.dll 大概率就是问题所在。
问题解决
本机的 kernel32.dll 的版本为 10.0.22621.3527,再检察五台测试电脑上的 kernel32.dll 的版本,发现正常运行的电脑的 kernel32.dll 的版本均在 10.0.17***.**** 以上,而报错的电脑的 kernel32.dll 的版本均在 10.0.16***.**** 以下;
报错电脑的 kernel32.dll 版本(旧)
正常运行电脑的 kernel32.dll 版本
Google 后了解到 kernel32.dll 与 Windows 版本直接关联,所以不能直接通过复制粘贴来更新。因此我不考虑更改 kernel32.dll,而是更改 llama.dll 让其适配旧版的 kernel32.dll;
为了让 llama.dll 适配旧版的 kernel32.dll,最直接的方法就是:在旧版的 Windows 系统(即 kernel32.dll 版本低于 10.0.16***.****)中配置 Python 环境,安装 llama-cpp-python(这一步必要 cmake 等环境,可参考官方文档),并对程序进行打包;
经测试,在旧版 Windows 上打包的程序同时也可在新版 Windows 上正常运行(新版向下兼容)。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
饭宝
金牌会员
这个人很懒什么都没写!
楼主热帖
53基于java的资源博客论坛系统设计与实 ...
天涯神贴合集500篇(2023最新) ...
zotero+坚果云实现多pc端及iPad同步管 ...
需求:清空三个月前的操作日志,并生成 ...
面试官:@Configuration 和 @Component ...
nginx 常用指令配置总结
PerfView专题 (第十一篇):使用 Diff ...
Django笔记十二之defer、only指定返回 ...
Python潮流周刊#5:并发一百万个任务要 ...
细数应用软件的缺陷分类
标签云
挺好的
服务器
快速回复
返回顶部
返回列表