Windows环境下Mediapipe安装异常致mediapipe.solutions属性缺失求助
问题描述
Windows系统(Python 3.12、pip 24.0)下测试OpenCV+MediaPipe手势识别时遇到以下问题:
- 使用
pip install mediapipe安装时提示ERROR: No matching distribution found for mediapipe - 通过MSYS2安装MediaPipe后,仓库放在
C:/Users/User/mediapipe时执行import mediapipe报ModuleNotFoundError: No module named 'mediapipe' - 将仓库移至项目目录后可导入,但调用
mediapipe.solutions时出现AttributeError: module 'mediapipe' has no attribute 'solutions' - 查阅相关issue得知需通过pip安装,但pip安装失败
解决步骤
降级Python版本
MediaPipe目前对Python 3.12的支持不完善,建议降级到Python 3.10或3.11版本,这两个版本有官方预编译的MediaPipe包。- 卸载当前Python 3.12,安装Python 3.11(安装时务必勾选"Add Python to PATH")
- 验证版本:
python --version
重新通过pip安装MediaPipe
降级后直接执行pip安装命令:pip install mediapipe若遇网络问题,可使用国内镜像源加速:
pip install mediapipe -i https://pypi.tuna.tsinghua.edu.cn/simple移除手动放置的MediaPipe仓库
彻底删除项目目录下的mediapipe文件夹,避免与pip安装的官方包产生冲突,确保代码导入的是正确的pip安装版本。
修正后的代码
import cv2 import mediapipe as mp import pyautogui # 初始化手部检测模型 handcap = mp.solutions.hands.Hands() # 修正拼写错误:drawing_utlis → drawing_utils drawings = mp.solutions.drawing_utils def testdevice(source): camera = cv2.VideoCapture(source) while True: _, image = camera.read() # 检查摄像头是否成功读取画面 if not _: print(f"无法读取摄像头 {source} 的画面") break image = cv2.flip(image, 1) rgb_img = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) hand_output = handcap.process(rgb_img) allhand = hand_output.multi_hand_landmarks if allhand: for hands in allhand: drawings.draw_landmarks(image, hands) cv2.imshow("Hand Movement Video Capture", image) key = cv2.waitKey(100) if key == 27: # 按ESC退出 break camera.release() cv2.destroyAllWindows() testdevice(0) testdevice(1)
内容的提问来源于stack exchange,提问作者user24456089
相关产品推荐
相关产品推荐

