如何在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
相关产品推荐
相关产品推荐

