Python中hishel升级到1.0.0导致使用pdm项目构建失败怎么办?

使用 pdm 的项目今天突然构建失败了,去官方 issue 搜了下,发现是因为 hishel 升级 1.0.0 导致不兼容。

我的 Dockerfile 解决方案如下

pip install --no-cache-dir -U "pdm==2.25.9" "hishel<1.0.0"

https://github.com/pdm-project/pdm/issues/3657

https://github.com/karpetrosyan/hishel


Python中hishel升级到1.0.0导致使用pdm项目构建失败怎么办?

1 回复

遇到 hishel 1.0.0 导致 PDM 项目构建失败的问题,通常是依赖版本冲突或 API 变更引起的。直接上解决方案:

1. 检查依赖冲突 先运行 pdm update 更新所有依赖,看是否能自动解决版本冲突。如果不行,手动检查依赖树:

pdm show --graph | grep hishel

2. 锁定 hishel 到兼容版本 如果 1.0.0 确实不兼容,在 pyproject.toml 中指定旧版本:

[tool.pdm.dev-dependencies]
# 或 [project.dependencies] 根据实际情况
hishel = "<1.0.0"

然后运行 pdm lock --update hishel 重新锁定。

3. 检查 API 变更 如果必须用 1.0.0,查看 hishel 的 changelog,常见破坏性变更包括:

  • 导入路径变化(如 from hishel import Something 改为 from hishel.new_module import Something
  • 配置参数名变更
  • 必填参数调整

4. 临时解决方案 在找到根本原因前,可以添加版本范围限制:

hishel = ">=0.15.0,<1.0.0"

5. 验证修复 更新后运行:

pdm install
pdm run python -c "import hishel; print(hishel.__version__)"

如果还是失败,检查构建日志的具体错误信息,通常是 ModuleNotFoundErrorImportError,这能帮你定位是哪个模块的导入出了问题。

建议先降级 hishel 到 0.x 版本保证项目能跑起来,再慢慢适配 1.0.0。

回到顶部