Poetry如何强制重装同名称的wheel依赖包?
问题根源
Poetry对本地路径依赖会计算文件哈希并存储在poetry.lock文件中,仅替换同路径下的同名wheel文件时,Poetry默认不会重新校验文件哈希,会认为依赖没有发生变化,因此不会触发重装。
强制重装指定依赖的方法
- 方法一(最常用):直接指定包名执行update命令,触发Poetry重新校验依赖源
该命令会重新检查该依赖的文件哈希,发现变化后自动更新lock文件并安装新版本wheel。poetry update <内部库包名> - 方法二(强制重装,不升级其他依赖):Poetry 1.2及以上版本可使用
--force-reinstall参数
该命令会跳过版本和哈希校验,直接强制重装指定依赖,不会改动其他依赖的版本。poetry install --force-reinstall <内部库包名> - 方法三:直接重新add该wheel文件,覆盖原有依赖声明
poetry add --force <wheel文件的绝对/相对路径>
更合理的同名wheel更新流程
- 给wheel包添加版本号后缀:每次迭代编译新的wheel时,在文件名中带上版本号标识,比如
internal-lib-1.0.0.whl升级为internal-lib-1.0.1.whl,同步修改pyproject.toml中的依赖路径,Poetry会自动识别版本变化,无需强制操作,也能避免不同版本的wheel混淆。 - 开发阶段使用源码路径依赖:如果该内部库处于频繁迭代阶段,可直接声明为源码开发依赖,无需每次打包wheel:
修改内部库源码后会直接在当前项目的虚拟环境中生效,无需重复打包、安装操作,待正式发布时再切换为wheel依赖即可。[tool.poetry.dependencies] internal-lib = { path = "../internal-lib-source-path", develop = true } - 仅更新lock文件校验值:如果必须保留同名wheel文件,替换后执行
poetry lock --no-update <内部库包名>,仅更新该依赖的哈希记录,后续执行普通poetry install即可自动安装新版本。
内容的提问来源于stack exchange,提问作者zen_otter
相关产品推荐
相关产品推荐

