python - 裤子python - 每个目录的BUILD文件
问题描述
我是裤子新手,使用pantsbuild python 教程来了解裤子
教程说:
The rule of thumb is that each directory of .py files has a BUILD file with a python_library target
我不明白为什么每个目录都需要 BUILD 文件?假设我有一个包含许多目录和子目录的库,为什么我不能在库主目录中有一个 BUILD 文件,其中包含库的sources
所有相关文件?
将裤子与 pip 的 setup.py 进行比较 - 我只能在主文件夹和source
所有文件上创建一个 setup.py。为什么裤子的概念不一样?
我还看到了裤子 python 项目的示例-其中的每个文件夹都有 BUILD 文件,并且任何 BUILD 文件(不是主 BUILD 文件)都声明了自己的库,其中包含与其 BUILD 文件相同级别的文件。这导致了奇怪的库名称 - 它看起来有点“hacky”
除了那条裤子,还有其他用于 PEX 的包装工具吗?
解决方案
该模式也称为1:1:1
规则(用于“1 个目录,1 个 BUILD 文件和 1 个目标。”),它确实具有优势。
- 子模块允许更多地使用构建缓存和更紧凑的迭代周期。
- 模块作为多团队代码库中的隔离边界
- 允许简洁的 BUILD 文件,跳过像 args 这样的
name
参数sources
python_library()
- 和更多
Pants 是一个企业级构建系统,专门用于大型 monorepos,因此对代码库切片进行操作的能力是必要的。子模块充当工作单元。
话虽如此,对于单个开发人员代码库,您是适合您的最终仲裁者。
是的,Pex 也可以与 Facebook 的另一个“类似 Blaze”的 Buck 一起构建。
推荐阅读
- python - 本地方法变量已设置
- elasticsearch - 弹性搜索 | 简单查询字符串 | FieldBoosting 未按预期工作
- flutter - Flutter 表单构建器包图像选择器 Firestore Flutter
- angular - 错误错误:未捕获(承诺):HttpErrorResponse:{“headers”:{“normalizedNames”:{},“lazyUpdate”:null},“status”:500
- docker - 我可以从 docker 映像中禁用“-t”选项吗
- python - 添加使用 Sphinx 在运行时生成的属性的文档
- kotlin - 在 Kotlin 中,是否可以在编译时检查构造函数的特定值是否作为指定值输入?
- batch-file - 用 ren 命令错误替换
- swift - CGDisplayCreateImage 只取壁纸截图
- flutter - Flutter:如何映射地图列表?