使用rules_python的pip_parse出现@my_deps仓库未定义错误求助
解决Bazel中@my_deps仓库未定义的错误
核心问题
pip_parse是仓库规则,只能在WORKSPACE(或WORKSPACE.bazel)文件中执行,你把它放在BUILD文件里是错误的——BUILD文件负责定义编译目标,没有创建新仓库的权限,所以@my_deps根本不会被生成,自然会报“仓库未定义”的错误。
修正步骤
把pip_parse相关配置从BUILD文件移到WORKSPACE,然后调整BUILD文件的内容:
修正后的WORKSPACE文件
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") rules_python_version = "740825b7f74930c62f44af95c9a4c1bd428d2c53" # Latest @ 2021-06-23 http_archive( name = "rules_python", sha256 = "3474c5815da4cb003ff22811a36a11894927eda1c2e64bf2dac63e914bfdf30f", strip_prefix = "rules_python-{}".format(rules_python_version), url = "https://github.com/bazelbuild/rules_python/archive/{}.zip".format(rules_python_version), ) # 从BUILD迁移过来的pip_parse配置,注意路径要加//:指向根目录的requirements.txt load("@rules_python//python:pip.bzl", "pip_parse") pip_parse( name = "my_deps", requirements_lock = "//:requirements.txt", )
修正后的BUILD文件
# 加载my_deps生成的规则并安装依赖 load("@my_deps//:requirements.bzl", "install_deps", "requirement") install_deps() # 示例:如果你的代码需要依赖某个PyPI包,比如requests,可以这样引用 # py_library( # name = "my_lib", # srcs = ["my_lib.py"], # deps = [ # requirement("requests"), # ], # )
额外注意
- Windows环境下不需要特殊配置,只要路径用正斜杠
/,不要用反斜杠\ - 确保
requirements.txt放在项目根目录,和WORKSPACE文件同级
内容的提问来源于stack exchange,提问作者tomocafe
相关产品推荐
相关产品推荐

