#Python
共 135 篇文章
Windows subprocess 输出为 None,后台报 UnicodeDecodeError
Windows 捕获 subprocess 文本输出时,后台 _readerthread 报 UnicodeDecodeError,结果却为 None。检查捕获方式与编码约定,改为收集字节后显式解码。
LangGraph 恢复后重复
LangGraph exit 恢复后重复值,核对 DeltaChannel pending writes 与 1.2.15 修复,比较实时状态和 checkpoint 重放顺序。
MANIFEST.in 已包含资源,安装 wheel 后却找不到文件
资源进入sdist,未必会安装进wheel。检查实际包目录、package-data与exclude规则,再从源码之外安装验证,避免editable掩盖漏装。
MCP 把 null 当成缺失
MCP 返回显式 null,旧客户端却按缺失结果报错。区分字段不存在与 null,核对 Python SDK 2.3.0 的输出 schema 验证和发送端边界。
MCP 订阅占住云函数
静态 MCP 服务的 subscriptions/listen 长流占住云函数。核对 Python SDK 2.3.0 的 subscriptions=False,让公布能力与处理入口一致,并验收真实客户端。
MCP 空服务报 KeyError
MCP 空服务通过 ClientSessionGroup 连接报 KeyError,或单独断开未关闭 transport。区分外部 session 与组内连接,核对空目录记账和当前版本边界。
pip 报 Constraints cannot have extras,检查 -r 和 -c
同一份文件通过-c读取,不能再用package[extra]启用可选依赖。区分安装需求与版本约束,保留marker、来源和完整依赖组合。
Python 构建发现多个顶层包,报 flat-layout 错误
根目录多个候选包会触发自动发现保护。先确定发行范围,再配置find与子包模式;namespace、单文件模块和src布局需按真实结构处理。
Celery 长 countdown 后报 consumer ack timed out
长countdown等待可能超过RabbitMQ确认期限。核对版本与队列类型,区别毫秒和秒,并检查channel关闭后的重新入队。
conda activate 在终端正常,在 Bash 脚本中却要求 conda init
conda info可运行,普通Bash脚本却无法activate,常见分支是没加载shell函数。单命令用核对过的conda run,多步任务检查hook和激活状态。
asyncio.gather 传入列表时报 unhashable type: 'list'
asyncio.gather 接收多个可等待对象,任务列表需用星号展开。核对元素、结果顺序、阻塞操作与异常取消规则,避免修复参数后改变业务并发语义。
pip 访问私有 IP 索引,报 check_hostname requires server_hostname
私有HTTPS索引用IP,旧pip可能在TLS包装阶段缺server_hostname。核对正式修复与实际工具版本,私有CA和IP身份仍需正常校验。
工具结果多出 None
ToolMessage 的 None 变成字面文本,检查构造前后。仅按业务空文本契约处理 None,保留零值、内容块、失败状态和 tool_call_id。
SGLang 缓存回载报错
SGLang 旧版在 EAGLE 与 LMCache MP 模式下,外部 KV 回载后报 pool memory leak detected。核对页大小、重复计数路径及统一缓存实现的版本边界。
ToolNode 并发超限
LangGraph 设置 max_concurrency=1,ToolNode 异步工具仍同时执行。核对节点内部 gather,用共享 awrap_tool_call gate 约束实际操作。
LangChain 索引错了
TextSplitter 的 start_index 指向后面的重复文字,检查空格重组与 text.find。保留原文分隔符,验证整组顺序覆盖后分配位置,旧索引单独回查。
Python 虚拟环境移目录后报 bad interpreter
项目移目录后,虚拟环境中的 pip 等命令仍可能指向旧 Python 路径。核对入口脚本和基础解释器,保留旧环境,在最终路径重建依赖并更新应用启动配置。


