You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Bazel重启机器后全量编译MediaPipe代码问题求助

解决Windows下Bazel重启后全量编译MediaPipe的问题

可能原因

  • Windows重启后,Bazel默认缓存目录(多位于系统临时文件夹)被系统清理,导致无法复用之前的编译缓存
  • 缓存目录权限在重启后变更,Bazel无法读取已生成的缓存文件
  • MediaPipe WORKSPACE文件中部分依赖使用了临时路径/相对路径,重启后路径标记失效

解决方案

1. 指定固定的Bazel缓存目录

将缓存目录设置到非系统临时文件夹,避免重启被清理。可以通过构建参数临时指定:

bazel build --compilation_mode=dbg --define MEDIAPIPE_DISABLE_GPU=1 --output_user_root=C:/bazel_cache //mediapipe/mydirectory:myprogram

也可以通过环境变量永久配置(PowerShell中执行):

[Environment]::SetEnvironmentVariable("BAZEL_OUTPUT_USER_ROOT", "C:/bazel_cache", "User")

配置后重启终端,后续构建会自动使用该固定缓存目录。

2. 修复缓存目录权限

右键点击指定的缓存目录(如C:/bazel_cache),选择属性-安全,确保当前用户拥有「完全控制」权限,避免因权限不足导致Bazel无法读取缓存。

3. 检查MediaPipe WORKSPACE依赖路径

打开MediaPipe的WORKSPACE文件,确保所有本地依赖使用绝对路径,避免依赖临时变量或不稳定的相对路径。例如:
将可能存在的错误配置:

local_repository(
    name = "some_dep",
    path = "%TEMP%/some_dep",
)

修改为绝对路径:

local_repository(
    name = "some_dep",
    path = "C:/mediapipe_deps/some_dep",
)

4. 排除缓存目录的安全扫描

Windows Defender实时扫描可能锁定缓存文件,导致Bazel无法复用缓存。将缓存目录添加到Defender排除项:

  • 打开Windows安全中心 → 病毒和威胁防护 → 病毒和威胁防护设置 → 添加或删除排除项
  • 选择「文件夹」,添加指定的Bazel缓存目录

验证步骤

  1. 完成配置后正常编译一次项目,确保缓存生成
  2. 重启机器
  3. 再次执行构建命令,观察是否仅编译修改过的文件

内容的提问来源于stack exchange,提问作者user22151664

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 17:04:54