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

如何在Bazel Python项目的不同Target中导入模块?

问题

现有如下文件结构:

.
├── bedrock
│   ├── BUILD
│   └── bedrock
│       ├── __init__.py
│       └── main.py
└── boilerplate
    ├── BUILD
    └── main.py                       

boilerplate/BUILD配置:

# boilerplate/BUILD
py_binary(
  name = "main",
  main="main.py",
  srcs = ["main.py","//bedrock:main"],
)

bedrock/BUILD配置:

# bedrock/BUILD
package(default_visibility = ["//visibility:public"])
py_library(
  name = "main",
  srcs = glob(["**/*.py"]),
)

bedrock/bedrock/main.py内容:

# bedrock/bedrock/main.py
def some_method():
  return "some_value"

请问如何在boilerplate/main.py中访问some_method?另外,Bazel Python相关文档质量实在太差了!还是英文,需要翻译成中文。


解决方法

在boilerplate/main.py中使用Python绝对导入语法即可访问some_method,因为bedrock库已通过//bedrock:main作为依赖引入,且bedrock/bedrock是合法的Python包(包含__init__.py):

# boilerplate/main.py
from bedrock.main import some_method

# 示例调用
print(some_method())

关于Bazel Python文档的吐槽

Bazel Python相关文档内容零散、表述模糊,官方仅提供英文版本,对非英语母语开发者极不友好,迫切希望官方推出完善的中文文档,同时优化现有文档的结构与清晰度。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:52:44