ty 在 monorepo 中如何用 --project 或 environment.root 检查多个 Python 包?

发布时间:2026/9/14 18:15:17

ty 在 monorepo 中如何用 --project 或 environment.root 检查多个 Python 包? ty 在 monorepo 中如何用 --project 或 environment.root 检查多个 Python 包【免费下载链接】tyAn extremely fast Python type checker and language server, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/ty2/ty在一个 monorepo 里多个 Python 包通常平铺在packages/这类目录下各自有独立的pyproject.toml和虚拟环境。ty 官方说明它支持 monorepo但嵌套项目的自动发现是有限制的默认情况下ty 用当前工作目录或--project选项来确定项目根目录见 docs/reference/typing-faq.md 的 Does ty support monorepos? 一节。也就是说ty 不会自动把每个子目录都当成独立项目来逐个检查你需要在下面两条路径中显式选一条。路径一按包检查——ty check --project 包目录这是 FAQ 给出的第一条做法从每个包目录运行ty check或用--project指定包ty check --project packages/package-a ty check --project packages/package-b--project的行为在 CLI 参考ty check --project条目中有明确说明命令在指定的项目目录内运行所有pyproject.toml会从该目录向上遍历目录树来发现该项目的虚拟环境.venv也会被一并发现除非设置了venv-path选项注意其余命令行参数例如相对路径仍相对于当前工作目录解析而不是相对于--project目录。每条命令只针对一个包包的pyproject.toml、.venv各自独立生效。如果你的仓库中每个包的包结构不同这是最不容易出歧义的主路径。路径二把多个包当作一个项目——配置environment.root如果你希望一条命令覆盖多个包可以在仓库根目录的配置里用environment.root列出所有包的源码目录。写在pyproject.toml[tool.ty.environment] root [packages/package-a, packages/package-b]或者写在ty.toml见 docs/modules.md 中的配置位置说明[environment] root [packages/package-a, packages/package-b]配置后在仓库根目录直接运行ty check即可命令与参数详见 docs/type-checking.md 和 docs/reference/cli.md。理解root的语义需要读 docs/reference/configuration.md 的root条目root是项目用于查找第一方模块的根路径列表按优先级顺序搜索列表中的第一项优先级最高如果不设置ty 会尝试识别常见项目布局自动初始化项目根.始终包含./src、./project-name、./python在存在且不是包不含__init__.py/__init__.pyi时也会被包含因此对于包平铺在packages/下的 monorepo 布局自动识别覆盖不到各包目录需要像上面这样显式列出。这条路径有一个 FAQ 明确指出的缺点所有包会被当作同一个项目处理可能出现 ty 认为某个导入可解析、而运行时实际不可导入的情况。如果各包之间不应互相导入或者各包依赖不同的虚拟环境优先选路径一。验证检查是否通过判断单次检查结果的依据是诊断输出与退出码根据 docs/reference/configuration.md 的说明默认情况下 ty 只要发出任何 warning 或 error 级别的诊断就以退出码 1 结束没有这类诊断时以退出码 0 结束所以无论用--project还是root方案在 CI 中直接跑命令后检查退出码即可0表示该包或该次检查范围没有 error/warning 诊断1表示需要查看诊断明细如需查看 ty 实际使用的模块搜索路径排查第一方模块找不到的情况可加-v运行-v为 verbose 输出见 docs/reference/cli.md。边界与限制自动发现嵌套项目目前能力有限这是 FAQ 原文给出的现状描述两个包的相对位置、root列表顺序第一项优先级最高都会影响第一方模块的解析结果调整布局时先确认root配置与目录实际一致root只解决第一方模块的定位第三方包仍按 docs/modules.md 描述的 Python 环境发现机制VIRTUAL_ENV、项目根或工作目录下的.venv、--python显式指定解析monorepo 中每个包有独立.venv时路径一能让 ty 针对每个包各自找到对应环境两种方案都不是一条命令无配置扫全仓库路径一靠逐包命令路径二靠显式root列表选择依据是包之间是否存在跨包导入和独立环境需求。【免费下载链接】tyAn extremely fast Python type checker and language server, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/ty2/ty创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/14 18:15:17

Web漏洞学习方法论:先原理后手挖再工具

不用怀疑,Web漏洞学习这条路,最怕的不是入门难,而是方向错。很多人一上来就问我“用什么工具”,开口就是“能不能推荐个扫描器”,这种思维再练三年也还是脚本小子。我自己带过不少新人,也踩过不少坑&#x…

2026/9/14 18:10:15

Python多线程为什么反而更慢?GIL原理与绕过方案全解析

“少熬三天夜”这个标题,写出来一点都不夸张。上上周末我在公司优化一个订单归并服务,单线程处理几十万条数据要跑四十多秒,领导嫌慢让我提效。我当时第一反应就是加线程,Python 多线程谁不会?一行ThreadPoolExecutor丢…

2026/9/14 18:10:15

小鹏汽车2025财报分析与预测模型搭建

1. 项目概述:为什么关注小鹏汽车2025财报? 作为国内造车新势力的代表企业之一,小鹏汽车(XPEV)的财务表现一直是行业风向标。2025年作为新能源汽车补贴完全退坡后的首个完整财年,其财报数据将直观反映企业在…

2026/9/14 18:40:19

Python图像处理入门:Pillow库基础与应用

1. Python图形处理入门:PIL/Pillow基础解析 计算机图形处理是当代编程中的必备技能,而Python生态中的PIL(Python Imaging Library)及其分支Pillow无疑是这个领域最受欢迎的库之一。作为处理图像的基础工具,它们提供了…

2026/9/14 18:40:19

Java数据类型存储与位运算实战指南

1. Java数据存储基础原理在Java中,数据存储的核心在于理解基本数据类型在内存中的表示方式。以int类型为例,它占用4个字节(32位)的存储空间。当我们声明int a 21时,计算机会将这个值转换为二进制形式存储:…

2026/9/14 18:40:19

如何在 Windows 上安装 MongoDB 并连接本地服务?

如何在 Windows 上安装 MongoDB 并连接本地服务? 【免费下载链接】toBeBetterJavaer 一份通俗易懂、风趣幽默的Java学习指南,内容涵盖Java基础、Java并发编程、Java虚拟机、Java企业级开发、Java面试等核心知识点。学Java,就认准二哥的Java进…

2026/9/14 18:35:19

xManager 上手指南:3分钟任意升级、降级与安装Spotify版本

xManager 上手指南:3分钟任意升级、降级与安装Spotify版本 【免费下载链接】xManager Ad-Free, New Features & Freedom 项目地址: https://gitcode.com/GitHub_Trending/xm/xManager 想换一个指定版本的Spotify——比如尝鲜新功能,或者回到某…

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/14 0:03:22

KCF目标跟踪算法与OTB工程实现:毕业设计实战解析

简介:这是一份基于KCF核相关滤波算法、融合尺度池与抗遮挡处理的目标检测跟踪MATLAB完整源码,主要面向计算机相关专业准备毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的初学者。源码在OTB数据集上完成验证,能够…

2026/9/14 0:03:22

语音情感识别实战:Keras实现LSTM、CNN、SVM与MLP多模型对比

简介:面向语音情感识别入门与进阶开发者,这份基于Keras的项目源码完整实现了LSTM、CNN、SVM、MLP四种模型,兼容Python3.8与Keras/TensorFlow2环境。压缩包内含49个文件,大小约70.31MB,主体包括Python脚本、yaml/json配…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/14 11:22:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码