ARTIFACTORY: pip安装不适用于pip 22.x

阿里尔Kabov
2023-01-22 11:05

为什么在升级PIP客户端后尝试下载PyPI包时会出现错误?

Pip客户端22.0于2022年1月29日上映。这个版本改变了用于HTTP解析的包。因此,当从私有注册表(包括JFrog Artifactory)安装pip包时,此更改会产生错误。

我们(JFrog)已经意识到这个问题已经在发布修复程序

更新Pip发布22.0.2版本,带有自动回退功能html5lib如果遇到上述错误。虽然这解决了pip安装错误,但它仍然首先尝试使用http.parser这意味着对Artifactory实例有不必要的额外请求。

Artifactory的未来版本将包含我们端的解决方案来支持http.parser,你可以跟随进度在这里

我受影响了吗?

直到修复在使用新的PIP客户端版本时,所有Artifactory版本都会受到影响。

如果您使用的是pip 22.0.0或22.0.1版本,那么在尝试通过Artifactory安装包时,您将受到影响并可能遇到以下错误:安装map

弃用:使用distutils配置文件配置安装方案已弃用,并且在不久的将来将不再工作。如果您正在使用Homebrew或Linuxbrew Python,请参阅https://github.com/Homebrew/homebrew-core/issues/76621上的讨论
查看索引:http://user:****@artifactory.jfrog.io/artifactory/api/pypi/pypi-virtual/simple
错误:例外:
回溯(最近一次调用):
文件"/usr/local/lib/python3.9/site-packages/pip/_internal/cli/base_command.py",第165行,在exc_logging_wrapper .py中
状态= run_func(*args)

文件"/usr/local/lib/python3.9/site-packages/pip/_internal/index/collector.py",第426行,在_raise_error
提高ValueError (
ValueError: HTML文档类型缺失或不正确。将< !DOCTYPE html >。

如果您认为这个错误是不正确的,请尝试传递命令行选项——use-deprecated=html5lib,并请在https://github.com/pypa/pip/issues/10825上对pip问题发表评论。

缓解措施

1.将您的pip客户机升级到版本22.0.2其中包括可使用的自动回退html5lib

2.使用脉冲22.0.1或以上,请遵循以下方法之一来使用html5lib

a.设置环境变量:PIP_USE_DEPRECATED = html5lib

b.在你的安装命令中使用这个标志:——use-deprecated = html5lib

3.或者,您可以使用以下方法之一降级pip客户机:

  • 在破坏性更改之前降级到最新的pip版本:
$ pip3 install——no-cache——upgrade pip==21.3.1 -i https://pypi.org/simple/ 请注意。降级命令需要访问pypi.org由于HTML文档类型不匹配的问题,您将无法通过从Artifactory安装包来降级。

  • 如果你没办法pypi.org,你可以完全卸载pip,并安装与Python版本捆绑的pip版本:

$ python3 -m PIP卸载PIP
$ python3 -m surerepip