Repolode
tach-org

tach-org/tach

一款用 Rust 编写的 Python 工具,用于可视化并强制执行模块间的依赖与接口约束。

Star
2,861
Fork
98
未关闭 Issue
56
最近提交
9天前

这是什么?

Tach 帮助 Python 项目维持模块边界。开发者在配置中声明各模块允许依赖的对象,工具会据此检查导入语句,并标出越过边界的导入。它还可以限制跨模块调用只能走模块声明的公共接口,并检测依赖图中的循环依赖。

它面向模块化单体(modular monolith)的代码结构,支持渐进式接入,团队可以只标记需要跟踪的包。通过 `tach init` 可以交互式完成初始配置,`tach check` 在发现违规时以非零退出码结束,便于集成到 CI 或 pre-commit 钩子中。

此外,Tach 可以生成依赖关系图:`tach show --web` 提供网页视图,本地运行则输出 GraphViz DOT 文件;`tach report` 可以列出指定路径的依赖与被引用情况。

核心功能

  • 01根据声明的模块依赖检查导入语句
  • 02限制跨模块调用只能通过公共接口
  • 03检测依赖图中的循环依赖
  • 04支持渐进式接入,只标记需要的模块
  • 05以网页图或 GraphViz DOT 格式可视化依赖关系
  • 06发现违规时以非零退出码结束,可接入 CI 与 pre-commit

适用场景

  • 在大型 Python 单体应用中强制执行分层或模块化边界
  • 防止 Python 单仓库(monorepo)中包之间出现不希望的导入
  • 在已有代码库中逐步引入架构规则
  • 通过生成的依赖图审视项目的依赖结构

快速上手

  1. 1

    从 PyPI 安装 Tach

    pip install tach
  2. 2

    运行交互式设置以标记模块边界

    tach init
  3. 3

    在项目根目录下执行已配置的边界检查

    tach check

使用前须知

  • 仅支持 Python 代码库。
  • 需要在 tach.toml 中手动声明模块依赖关系,并以静态方式检查边界。

收录于专题

标签

常见问题

tach 是什么?
一款用 Rust 编写的 Python 工具,用于可视化并强制执行模块间的依赖与接口约束。 Tach 帮助 Python 项目维持模块边界。开发者在配置中声明各模块允许依赖的对象,工具会据此检查导入语句,并标出越过边界的导入。它还可以限制跨模块调用只能走模块声明的公共接口,并检测依赖图中的循环依赖。
tach 可以免费使用吗?用的什么许可证?
tach 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
tach 还在维护吗?
活跃维护中。tach 最近一次提交是在 2026年10月29日。
tach 适合用来做什么?
在大型 Python 单体应用中强制执行分层或模块化边界 防止 Python 单仓库(monorepo)中包之间出现不希望的导入 在已有代码库中逐步引入架构规则 通过生成的依赖图审视项目的依赖结构
tach 怎么安装和运行?
从 PyPI 安装 Tach: pip install tach 运行交互式设置以标记模块边界: tach init 在项目根目录下执行已配置的边界检查: tach check
在哪里获取 tach?
源代码和安装说明在 GitHub 上:https://github.com/tach-org/tach

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目