Poetry更新私有依赖my-package报错:哈希值不在poetry.lock中,如何解决?
问题原因与修复方案
错误原因
你在my-package侧的操作流程有误:修改版本号后执行poetry lock --no-update不会重新计算新版本包的哈希值,这个命令仅会保留现有依赖的锁定状态,不会更新当前包自身的哈希信息。当你把这个未正确生成哈希的包发布到私有仓库后,my-project在拉取新版本时,本地poetry.lock中记录的旧哈希与远程包的实际哈希不匹配,从而触发报错。
修复步骤
1. 修正my-package的发布流程
回到my-package项目目录:
- 确认
pyproject.toml中的版本号已正确更新为0.0.10 - 执行构建命令生成带正确哈希的包文件:
poetry build - 重新发布到私有仓库:
poetry publish - (可选)若需要更新
my-package自身的lock文件,执行poetry lock(不要加--no-update),确保lock文件包含新版本的正确哈希。
2. 修复my-project的依赖拉取问题
进入my-project项目目录:
- 清除Poetry中
my-package的缓存,避免旧缓存干扰:poetry cache clear my-package --all - 尝试重新更新依赖:
poetry update my-package - 如果上述命令仍报错,删除
poetry.lock文件后重新安装:
或者直接执行rm poetry.lock poetry installpoetry update my-package让Poetry重新生成包含正确哈希的lock文件。
注意事项
- 私有包发布的正确流程应为:更新版本号 →
poetry build→poetry publish,无需手动执行poetry lock --no-update。poetry build会自动计算包文件的哈希值,确保发布的包与后续拉取时的哈希验证一致。 poetry lock --no-update仅适用于在不升级依赖版本的情况下修复lock文件格式问题,不适合用于新版本包的发布准备。
内容的提问来源于stack exchange,提问作者lollerskates
相关产品推荐
相关产品推荐

