news 2026/9/2 13:04:35

MediaPipe 跑通 Python 3.7:改三个文件就能用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MediaPipe 跑通 Python 3.7:改三个文件就能用

MediaPipe 跑通 Python 3.7:改三个文件就能用

【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe

公司一台旧机器还停在 Python 3.7,你要把现成的手部跟踪流水线迁到 MediaPipe 上。pip install一路报错,整个环境又没法升级。这个例子讲清楚:怎么改三处文件,让 MediaPipe 手部检测在 3.7 下直接跑通。

🔍 先花2分钟确认你是不是这个问题

MediaPipe 安装报错解决这类问题,症状一般就三种,对号入座:

  1. 安装阶段依赖冲突:
ERROR: Could not find a version that satisfies the requirement protobuf>=4.25.3,<5 (from mediapipe) ERROR: No matching distribution found for protobuf>=4.25.3,<5

protobuf 4.x 的 wheel 不提供 3.7 的构建,pip 自然找不到可用版本。

  1. 运行阶段语法报错:
File "mediapipe/python/solution_base.py", line 123 SyntaxError: invalid syntax

代码里出现了 3.8+ 才支持的写法,3.7 解释器根本不认识。

  1. 导入阶段失败:
ImportError: cannot import name 'Packet' from 'mediapipe.python.packet'

多是 protobuf 绑定装不上导致的连带问题,根子还是在第 1 条。

🔧 改这三处就够了

本质原因一句话:MediaPipe 官方版本矩阵(3.9~3.12)和你的 3.7 解释器错位了,新版依赖相当于新钥匙配旧锁孔,拧不动。改法集中在三个文件,改动都发生在你本地克隆的工作区里,别提交回上游仓库。

1) requirements.txt 钉死版本号

文件在仓库根目录的requirements.txt。当前内容是absl-py~=2.3flatbuffers~=25.9、未锁numpy,也没显式写 protobuf(它是传递依赖被拉进来的)。建议改成:

absl-py==0.15.0 certifi numpy<2 protobuf==3.20.1 flatbuffers>=2.0 opencv-contrib-python matplotlib

改这里是为了把三个没有 3.7 构建的依赖压回兼容区间。protobuf 是关键:3.20.1 是 3.x 系列里最后一个支持 3.7 的版本,再往低了降,仓库里 pb2 生成的代码可能缺 API。numpy 加<2是因为 numpy 2.x 只有 3.9+ 的 wheel。

2) setup.py 补版本声明

打开 setup.py,在classifiers列表里加一行,并补上python_requires

# 改动前(仓库现状) 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', # 改动后 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10',
python_requires='>=3.7',

改这里是为了让元数据和你的实际解释器一致。classifiers 本身不拦安装,真正的卡点是上一条的依赖解析,这里只是别让工具链误判。

3) solution_base.py 换掉新语法

如果报 SyntaxError,元凶通常是海象运算符。替换套路是"先赋值,再判断":

# 改动前(3.8+ 写法) if (result := self._process_image(image)) is None: return None # 改动后(等价逻辑,3.7 可解析) result = self._process_image(image) if result is None: return None

我在mediapipe/python/下用正则查过:=,当前版本的 mediapipe/python/solution_base.py 没有命中;你拿到的版本若有报错,照这个模式逐一替换即可。

✅ 跟着做一遍,3分钟跑通

先克隆并安装:

git clone https://gitcode.com/GitHub_Trending/med/mediapipe cd mediapipe pip install -r requirements.txt pip install .

再建一个最小脚本test_hand.py

import cv2 import mediapipe as mp hands = mp.solutions.hands.Hands() img = cv2.imread('mediapipe/examples/coral/images/object_detection_demo_coral.jpg') res = hands.process(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) print('hand found:', bool(res.multi_hand_landmarks)) hands.close()

看到hand found: True,说明 Python 3.7 兼容改完就通了。提醒一句:源码安装依赖 bazel,setup.py里会做版本检查,首次编译偏慢属正常现象。

⚠️ 少走弯路的几个点

  • 别把 protobuf 降过头。3.20.1 是下限,再低 pb2 文件容易缺 API 直接 ImportError。
  • 打算留在生产环境的话,记得定期查 protobuf 3.20.x 与 absl-py 0.15.0 的 CVE 公告,旧版本不再收安全更新。
  • mp.solutions.*属于旧版 Solutions 线,和新的 Tasks 线依赖要求不同,混用时注意分开两个虚拟环境。
  • 只是想快速验证能力的话,可以先装当年 3.7 时代的预编译 wheel 跑业务,确有定制需求再回到这套源码改法。

长期看,把环境挪到 3.9 或 3.10 更省心,本文所有钉版本操作都能原样去掉。安装细节和排错入口见仓库内文档 docs/getting_started/python.md。

【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 13:03:04

Ryujinx Switch 模拟器完全教程:从源码编译到跑通第一个游戏

Ryujinx Switch 模拟器完全教程&#xff1a;从源码编译到跑通第一个游戏 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 打开游戏列表&#xff0c;一半灰色打不开、能开的卡在加载界面…

作者头像 李华
网站建设 2026/9/2 12:57:07

墨绿色商务风开题报告PPT模板:从修改到答辩全指南

这套模板不是“随便套个绿颜色”就完事的开题报告&#xff0c;而是把商务汇报的克制感和学术汇报的逻辑感做在一起的成品。核心看点是墨绿色主色、高级灰辅助色、结构化版式&#xff0c;以及它自带的一套适合论文开题场景的页面框架。如果你正在准备毕业论文开题答辩、研究生开…

作者头像 李华
网站建设 2026/9/2 12:55:34

dotnet/skills xUnit v2升v3清单:12个关键变更点一次看懂

dotnet/skills xUnit v2升v3清单&#xff1a;12个关键变更点一次看懂 【免费下载链接】skills Repository for skills to assist AI coding agents with .NET and C# 项目地址: https://gitcode.com/GitHub_Trending/skills17/skills &#x1f4e6; skills17/skills 仓库…

作者头像 李华
网站建设 2026/9/2 12:55:20

六自由度机器人正逆运动学与轨迹规划MATLAB实战

简介&#xff1a;本资源是一套面向计算机、电子信息工程及数学等专业本科生的六自由度机器人运动学与轨迹规划MATLAB实践工具集&#xff0c;聚焦正逆运动学建模、末端位姿求解与连续轨迹生成等核心问题&#xff0c;适用于课程设计、期末大作业及毕业设计等中阶工程实践场景。压…

作者头像 李华
网站建设 2026/9/2 12:53:28

如何阅读Apache Ossie核心规范spec.md:面向初学者的完整导读

如何阅读Apache Ossie核心规范spec.md&#xff1a;面向初学者的完整导读 【免费下载链接】ossie Apache Ossie, industry wide specification effort to standardize how we exchange semantic metadata across analytics, AI and BI platforms, providing a vendor neutral, s…

作者头像 李华