Sublime Text 需通过 LSP-pyright 插件+pyright 二进制实现 Pydantic 字段补全和 FastAPI 路由跳转,因其静态分析无法识别运行时注入的字段与依赖;异步语法检查需启用 pyright 的 reportGeneralTypeIssues 并安装对应类型包。

Sublime Text 本身不原生支持 Python 异步语法高亮、Pydantic 模型字段补全或 FastAPI 路由跳转,但通过合理组合插件和配置,可以构建出轻量、响应快、适合阅读和小规模调试的开发环境——前提是别指望它替代 VSCode 或 PyCharm 的完整 LSP 支持。
为什么 Sublime 里 Pydantic 字段不补全?根本不是插件没装对
常见现象:装了 Anaconda 或 SublimeJEDI,写 class User(BaseModel) 后点 . 没反应;或者补全列表里只有 __init__ 这类魔术方法,没有 name: str 字段。
原因很直接:Pydantic v2 的字段是运行时通过 __pydantic_core_schema__ 和描述符机制注入的,静态分析工具(包括 Jedi)默认看不到。Sublime 的补全引擎不执行代码,只做 AST 解析或符号索引。
- 必须启用
pyright或mypy作为后端语言服务器(LSP),而不是依赖纯 Python 插件 -
pyright需要项目根目录存在pyrightconfig.json或pyproject.toml,且明确声明"typeCheckingMode": "basic"或更高 - 确保
pyright版本 ≥ 1.1.350(2026 年起已原生识别BaseModel.model_fields动态属性) - 不要用
pip install pyright—— 它只是 CLI 工具;Sublime 需要LSP-pyright插件 + 系统 PATH 中可调用的pyright二进制
FastAPI 路由和依赖注入在 Sublime 里怎么跳转?别硬靠 Goto Definition
你写 @app.get("/users"),然后按 Ctrl+Click 想跳到 get_db 依赖里看 AsyncSession 类型?大概率失败。因为 Depends(get_db) 是运行时绑定,Sublime 的静态索引无法还原依赖链。
可行做法是“人工锚定”关键类型:
- 在
main.py或deps.py顶部加一行注释:# type: AsyncSession,告诉 LSP 这个变量实际类型 - 对常用依赖函数加
-> AsyncSession返回类型注解,哪怕只是存根(def get_db() -> AsyncSession: ...) - 避免把
Depends嵌套太深,比如Depends(Depends(Depends(...)))—— LSP 几乎不可能推导 - 用
from fastapi import Depends而非from fastapi.dependencies.utils import get_dependant,后者会切断类型线索
异步函数标记和 await 提示为什么总漏报?
现象:写了 async def read_item(),里面调用了 db.execute(...) 却没加 await,Sublime 没标红、也没警告。
这不是 Sublime 的锅,而是 pyright 默认不检查协程调用合规性。需要手动开启:
- 在
pyrightconfig.json中添加:"reportGeneralTypeIssues": "error" - 确保数据库驱动(如
sqlalchemy.ext.asyncio)已正确安装,且pyright能解析其 stubs(推荐pip install sqlalchemy[asyncio]) - 别用
session.query(...).all()这种同步写法 ——pyright不会报错,但运行时直接抛AsyncContextRequiredError - 对第三方异步库(如
httpx.AsyncClient),检查是否安装了对应types-*包(例如types-httpx)
真正卡住人的地方从来不是“能不能配”,而是配完之后误以为它能像 IDE 一样理解 Depends 的生命周期或 BaseModel 的字段反射——它不能。Sublime 的优势在于快、稳、低资源占用,适合边读源码边改小接口;一旦涉及复杂依赖图或动态模型生成,就得切到带完整 LSP 的编辑器,或者直接靠 uvicorn --reload + 日志定位问题。

















