命令行工具 活跃维护

tach

tach-org/tach

一个用于可视化强制依赖关系的 Python 工具,采用模块化架构 🌎 开源 🐍 可通过 pip 安装 🔧 可逐步采用 - ⚡ 实现时无运行时影响 ♾️ 可与现有系统互操作 🦀 用 Rust 编写

2835
Stars 标星
95
Forks 分支
12
Watchers 关注
50
Open Issues
Rust
主要语言
MIT
开源协议
24.5 MB
仓库大小
3 天前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:tach-org/tach
git clone https://github.com/tach-org/tach.git
git clone git@github.com:tach-org/tach.git
README.md main

英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。

Tach

Tach 是一个用于强制依赖关系和接口的 Python 工具,由 Rust 编写。

Tach 的设计灵感来源于 模块化单体架构。

文档

https://github.com/user-attachments/assets/11eec4a1-f80a-4f13-9ff3-91a9760133b6

Tach 可以强制执行:

Tach 是:

  • 🌎 开源的
  • 🐍 可通过 pip 安装
  • 🔧 可逐步采用
  • ⚡ 实现时不影响运行时性能
  • ♾️ 与现有系统互操作

入门

安装

pip install tach

设置

Tach 将引导你完成初始项目设置。

运行:

 tach init

在欢迎信息后,您将看到一个文件树界面,允许您交互式地配置您的项目。

使用箭头键进行导航,并使用“Enter”标记每个模块边界。您可以标记所有顶级 Python 包,或者只标记您想跟踪的几个。

FAQ: What is a module?

如果您的 Python 代码位于项目根目录下,或者您正在使用包含多个 Python 包的单一代码库,使用“s”键标记您的 Python 源根目录。

强制执行

Tach 提供了一个 CLI 命令来强制执行您刚刚设置的边界!在您的 Python 项目根目录下运行:

tach check

你将会看到:

✅ All modules validated!

你可以通过以下方式验证 Tach 是否正常工作:

  1. 从 tach.toml 中的 depends_on 键中移除一个项,或者将其标记为 已弃用
  2. 通过在之前没有相互导入的模块之间添加一个导入。

两种方法都试试,然后再次运行 tach check。这将生成一个错误:

❌ tach/check.py[L8]: Cannot use 'tach.filesystem'. Module 'tach' cannot depend on 'tach.filesystem'.

每个错误都表示一个违反你依赖关系的导入。如果你的终端支持超链接,点击文件路径即可直接跳转到错误位置。

检测到错误时,tach check 将以非零代码退出。它可以轻松集成到 CI/CD、预提交钩子 和 VS Code 等中!

附加功能

可视化你的依赖图。

tach show [--web]

Tach 将生成你的依赖图。以下是 Tach 的显示效果:

请注意,这个图是在远程生成的,使用的是你在运行 tach show --web 时 tach.toml 的内容。

如果你想在本地使用 GraphViz DOT 格式,只需运行 tach show 就会在你的工作目录中生成 tach_module_graph.dot。

你可以查看给定路径的依赖关系和使用情况:

tach report my_package/
# OR
tach report my_module.py

例如:

> tach report python/tach/filesystem
[Dependencies of 'python/tach/filesystem']
python/tach/filesystem/install.py[L6]: Import 'tach.hooks.build_pre_commit_hook_content'
python/tach/filesystem/project.py[L5]: Import 'tach.constants.CONFIG_FILE_NAME'
...
-------------------------------
[Usages of 'python/tach/filesystem']
python/tach/cache/access.py[L8]: Import 'tach.filesystem.find_project_config_root'
python/tach/cache/setup.py[L7]: Import 'tach.filesystem.find_project_config_root'
...

Tach 还支持:

更多信息请参见文档。如果您有任何反馈,我们很乐意交流!

如果您有任何问题或遇到任何问题,请通过提交Github Issue让我们知道!


本站来源与版权声明
  • 本文标题:tach - 一个用于可视化强制依赖关系的 Python 工具
  • 本文链接:https://cn121.com/cli/tach-org-tach.html
  • 原项目:tach-org/tach 版权归原作者 tach-org 及贡献者所有
  • 收录信息:本站于 2026-10-10 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
  • 开源协议:收录时本项目采用 MIT(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。
  • 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 tach-org/tach。
  • 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
  • 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
  • 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。