【问题标题】:pants python - BUILD file for each directory裤子python - 每个目录的BUILD文件
【发布时间】:2020-03-01 15:33:09
【问题描述】:

我是裤子新手,使用pantsbuildpython教程学习裤子

教程说:

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包装工具吗?

【问题讨论】:

  • 这只是经验法则。没有什么可以阻止您拥有一个 BUILD 文件并使用“*/.py”将所有 python 文件放入同一个目标中。鼓励每个目录使用 1 个 BUILD 文件的原因是允许小而细化的目标 - 这与语言中的包的概念非常吻合,包括 python。

标签: python pex pants


【解决方案1】:

这种模式也称为1:1:1 规则(用于“1 个目录,1 个 BUILD 文件和 1 个目标。”),它确实有优势。

  • 子模块允许更多地使用构建缓存和更紧凑的迭代周期。
  • 模块充当多团队代码库中的隔离边界
  • 允许使用简洁的 BUILD 文件,跳过 namesources 等参数以支持 python_library()
  • 等等

Pants 是一个企业级构建系统,专门用于大型 monorepos,因此对代码库切片进行操作的能力是必要的。子模块充当工作单元。

话虽如此,对于单个开发人员代码库,您是最适合自己的最终仲裁者。

是的,Pex 也可以与 Buck 一起构建,Buck 是 Facebook 的另一个“Blaze-like”。

【讨论】:

    猜你喜欢
    • 2020-09-11
    • 1970-01-01
    • 2014-12-06
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    相关资源
    最近更新 更多