实习到尾声的这几天,同时要忙期末周作业答辩、复习还有工作。属于是连轴转的地步了。

在跟同学做答辩作业的时候,做的手势识别被干回来做了,n次搜索+ai求解和官方issue作者回答都解决不了,还是靠之前用python吃过的史踩过的坑的经验还有工作经验排查解决了,记录一下。

环境python 3.12(64位)非虚拟环境

from mediapipe.python._framework_bindings import model_ckpt_util ImportError: DLL load failed while importing _framework_bindings: 动态链接库(DLL)初始化例程失败。

省流解决方案:安装好msvc-runtime,先导入mediapipe再导入PyQt5

一开始网上是这么说的,这个库在windows上缺少C++的开发库msvc-runtime,这是一个原因,因为mediapipe的官方文档可见主要是在linux上开发使用的,谷歌的库一如既往的尿性没完全适配windows,没对在windows下的用户加上msvc-runtime的库依赖,pip安装mediapipe时当然就不会安装msvc-runtime,而主体是C++编写的mediapipe就跑不起来。于是直接在终端下:

python.exe -m pip install --user msvc-runtime

回车一气呵成,但报错还是原来DLL初始化失败,官方库的issue也是有人在执行后还是解决不了问题的,但又有一部分人是说work for me,于是根据经验猜测是库导入出了问题,看着一堆依赖:sys、cv2、numpy、mediapipe、PyQt5、pyautogui、comtypes、pycaw。先排除可能性最小的官方库和涉及com口调用的sys、comtypes、pycaw,就只剩下cv2、numpy、PyQt5、pyautogui四种,又因为是DLL出问题结合前面msvc-runtime的开发库C++运行时,直接先锁定Qt(原先就是C++的图形界面三方库,还是社区非官方移植的),果然将原先是PyQt5先导入后再导入mediapipe的导入顺序一调换过来,识别程序就正常工作了。

标签:study, programing, python

你的评论