pip 20.3及以上版本无法安装自定义delivery包的解决方案咨询
问题原因
pip 20.3版本开始默认启用符合PEP 440规范的严格版本号校验规则,同时替换了旧版的依赖解析器。你使用的local-1.5属于非标准版本号格式,旧版pip对这类版本号做了兼容处理,因此可以正常安装,新版pip默认会拦截不符合规范的版本号请求,即便版本在列表中也无法匹配到对应安装包。
解决方案
- 【长期最优方案】调整版本号为符合PEP 440规范的格式
PEP 440规定本地版本标识需要使用+连接,你可以把版本号修改为1.5+local,重新打包后生成的wheel包名为delivery-1.5+local-py3-none-any.whl,使用如下命令即可正常安装:pip install delivery==1.5+local
该方案完全符合pip新版本的规则,不会出现后续兼容性问题。 - 【临时兼容方案1】允许非PEP 440版本号
执行安装命令时添加--allow-non-pep440-version参数,跳过版本号规范校验:pip install --allow-non-pep440-version delivery==local-1.5 - 【临时兼容方案2】启用旧版解析器
执行安装命令时添加--use-deprecated=legacy-resolver参数,使用pip 20.3之前的旧依赖解析器:pip install --use-deprecated=legacy-resolver delivery==local-1.5
注意该参数属于废弃属性,在更高版本的pip中可能会被移除,仅适合临时应急使用。 - 【本地安装方案】直接指定wheel包路径
如果你本地留存有对应安装包,可以直接通过文件路径安装,完全绕开版本号校验:pip install ./delivery-local-1.5-py3-none-any.whl
内容的提问来源于stack exchange,提问作者PythonBash
相关产品推荐
相关产品推荐

