#Python
共 135 篇文章
npm 编译原生模块报 No module named distutils:旧 node-gyp 遇到 Python 3.12
npm 编译原生模块遇到 distutils 缺失时,检查实际 node-gyp 与 Python 路径。Python 3.12 需兼容构建工具,更新被调用的依赖链,保留临时环境与原生 ABI 验收边界。
ClickHouse 命令行能连接,Python HTTPDriver 却报 400:转发到了原生端口
ClickHouse 命令行能连,Python HTTPDriver 却报 400 时,核对端口转发实际目标。区分原生 TCP 与 HTTP、HTTPS 接口,按响应内容判断协议错误,保留本地转发和 TLS 边界。
pip 报 No module named _ssl:装 OpenSSL 不会补回 Python 扩展
pip 缺少 _ssl 先确认实际解释器与扩展构建。区别 CA 验证失败,按分发或独立构建流程修复,保留 OpenSSL 版本与运行时边界。
Pydantic 2 的 Optional 字段没传,为什么仍报 Field required
Pydantic 2 区分允许 None 和允许省略。按字段默认值核对必填规则,部分更新用 exclude_unset 保留省略与显式清空的区别。
Python 报 cannot reuse already awaited coroutine:区分重跑与共享任务
协程对象结束后不能重新等待执行。定时调用用函数或工厂创建新协程,共享同一次执行用 Task,并明确重复副作用、取消、失败缓存与循环生命周期。
Python 3 对 dict.values() 使用下标报 not subscriptable
dict.values() 是可迭代的动态视图。根据读取需求选择先转列表、next 取值或按键访问,并处理空字典、插入顺序和浅复制边界。
Python 调用异步函数没有执行,提示 coroutine was never awaited
直接调用 async def 函数只创建协程对象。按当前入口选择 asyncio.run 或 await,需要任务时保留引用并等待结果,避免用忽略警告代替修复。
Python sqlite3 查询到记录,rowcount 仍返回 -1
区分 SELECT 的结果条数与修改行数,按存在判断、完整取数或总数统计选择读取方式,避免重复 fetchall 丢掉数据。
requests 已安装却报 partially initialized:检查项目里的 http.py
Requests 已安装且交互导入正常,脚本却报 partially initialized 时,核对 http.py 等本地同名文件、导入路径与进程缓存,避免把重装依赖当成通用修复。
Python 3 在 Windows 写 CSV,每两条记录之间多出空行
Python 3 CSV 默认行结束符与 Windows 文本换行转换叠加,可能产生额外空行。通过 newline 空字符串修正写入,核对字节与 CSV 记录并保留原文件。
Python re 报 look-behind requires fixed-width pattern
Python 后行断言把开头锚点与字母并列时,分支宽度不同会导致编译失败。将选择移到断言外,或用捕获组提取可变前缀后的内容,并检查匹配位置。
Poetry 当前 Python 能运行,version solving 却失败:看声明的支持范围
Poetry 按项目声明的 Python 范围求解,而不只看当前解释器。根据真实兼容范围修改约束,区分发行元数据与锁定范围,避免用条件依赖跳过必需功能。
Python sqlite3 执行多份脚本后 rollback 没有撤销前面的写入
sqlite3 的 legacy 模式会在 executescript 前提交待处理事务。明确 Python 3.12 之后的 autocommit=False,或在一次完整脚本中显式控制事务,并检查失败后的实际数据。
pytest-asyncio 0.25.2 teardown 报 Event loop is closed:检查重复关闭
pytest-asyncio 0.25.2 清理已经被自定义 fixture 关闭的循环时,可能在 teardown 报错。核对 0.25.3 修复边界、循环所有权及新版 event_loop 迁移。


