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

Bazel执行脚本遇ModuleNotFoundError:如何引入Python依赖?

解决Bazel运行Python代码时找不到github模块的问题

Bazel构建Python目标时会使用独立的沙箱环境,不会直接读取系统全局pip安装的包,必须通过Bazel的依赖管理规则引入第三方库,具体步骤如下:

1. 配置WORKSPACE文件

首先需要引入rules_python规则集,并配置pip依赖导入:

# WORKSPACE 文件内容
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

# 引入rules_python
http_archive(
    name = "rules_python",
    sha256 = "f8a63c6b3f5a397a649d645481f295678d21fbfb0d7fa33e4d4d2e91b9d3b243",
    url = "https://github.com/bazelbuild/rules_python/releases/download/0.25.0/rules_python-0.25.0.tar.gz",
)

# 注册Python工具链
load("@rules_python//python:repositories.bzl", "python_register_toolchains")
python_register_toolchains(
    name = "python3_11",
    python_version = "3.11", # 替换为你实际使用的Python版本
)

# 导入pip依赖
load("@rules_python//python:pip.bzl", "pip_install")
pip_install(
    name = "pip",
    requirements = "//:requirements.txt", # 指向项目根目录的requirements文件
)

2. 创建requirements.txt文件

在项目根目录创建requirements.txt,指定需要的github库版本:

github==1.2.7

3. 修改BUILD文件

在你的py_binary目标中添加deps字段,引用Bazel管理的github库:

py_binary(
    name = "main",
    srcs = ["main.py"],
    deps = [
        "@pip//:github", # 引用pip_install导入的github包
    ],
    visibility = ["//visibility:public"]
)

4. 重新运行Bazel命令

执行以下命令即可正常运行:

bazel run //:main

新版本rules_python适配(0.27.0及以上)

如果使用较新版本的rules_python,推荐使用pip_parse替代pip_install,步骤如下:

  1. 生成requirements.lock文件:
pip freeze > requirements.lock # 或使用pip-compile生成更精简的锁定文件
  1. 修改WORKSPACE中的pip配置:
load("@rules_python//python:pip.bzl", "pip_parse")

pip_parse(
    name = "pip",
    requirements_lock = "//:requirements.lock",
)

load("@pip//:requirements.bzl", "install_deps")
install_deps()

BUILD文件的deps配置保持不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:40:36