pydantic字段不补全需换用lsp-pyright+pyright二进制(≥1.1.350),fastapi跳转失效需人工添加返回类型注解,async断点无效因sublime不支持调试需终端运行uvicorn,await漏报需开启pyright严格模式并安装types-sqlalchemy等stub包。

Sublime里Pydantic字段不补全,根本不是插件没装对
直接结论:Jedi、Anaconda这类纯静态分析插件在Pydantic v2下必然失效,因为model_fields是运行时通过__pydantic_core_schema__注入的,AST解析根本看不到。
必须换用LSP-pyright + pyright二进制,且版本不能低于1.1.350(2026年起才原生支持BaseModel.model_fields动态属性):
-
pyrightconfig.json需存在项目根目录,内容至少含{"typeCheckingMode": "basic"} - 别用
pip install pyright——那只是CLI工具;Sublime需要LSP-pyright插件,并确保系统PATH中能调用pyright命令 - 如果补全仍缺失字段,检查
BaseModel是否从pydantic.BaseModel导入(而非pydantic.v1.BaseModel)
FastAPI路由跳转失效,别硬按Ctrl+Click
现象:@app.get("/users")里点Depends(get_db)跳不到定义处,或跳过去只看到Any类型——这不是Sublime问题,而是ASGI依赖链无法被静态分析还原。
可行解法是“人工锚定”关键类型线索:
- 在
deps.py里给依赖函数加明确返回注解:def get_db() -> AsyncSession:,哪怕函数体只写... - 避免嵌套
Depends(Depends(...)),LSP最多推导一层 - 顶部加类型注释:
# type: AsyncSession(放在变量声明行上方),pyright会据此增强类型上下文 - 始终用
from fastapi import Depends,别导入底层模块如fastapi.dependencies.utils,否则类型链断裂
async函数断点不触发,90%是启动方式错了
Sublime本身不执行代码,所以调试必须依赖外部进程。但如果你用program模式跑main.py,就等于绕过了uvicorn事件循环,async def函数压根不会进入协程调度器。
真正有效的做法只有两种:
- 用
LSP-pyright配合pyright --server做类型检查和跳转,但**不用于调试断点** - 调试必须交给终端:
uvicorn main:app --reload --host 127.0.0.1 --port 8000,然后用print()或logging.debug()打点——Sublime没有debugpy集成,强行设断点无效 - 若坚持在编辑器内调试,换VSCode,配置
"module": "uvicorn"和"justMyCode": false,否则async栈帧不可见
异步语法检查总漏报await,得开pyright严格模式
默认pyright不检查协程调用合规性,所以db.execute()没加await也不会标红。这不是bug,是设计取舍。
要启用检测,必须在pyrightconfig.json里显式打开:
-
"reportGeneralTypeIssues": "error"(或"warning") - 确保已安装对应类型包:
pip install sqlalchemy[asyncio] types-sqlalchemy - 检查
db.execute()返回类型是否标注为Awaitable[Result];若用自定义封装,需加-> Awaitable[...]注解 - 注意:pyright 1.1.350+ 才支持
AsyncSession的完整类型推导,旧版即使开了也会误报
最易被忽略的是类型包缺失——光有pyright不行,types-sqlalchemy这类stub包没装,execute()就被当普通同步方法处理了。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










