2

Python 的 Requests 库捆绑了chardeturllib3packages

这可能意味着捆绑版本会有错误。我想知道是否有一种干净或简单的方法可以让请求使用不同版本的 urllib3。例如,我可以pip install requests urllib3让请求自动使用该版本吗?

我知道 Requests自动使用certifi而不是它的捆绑证书,如果certifi已安装,但我找不到这样的文档urllib3

否则我看到的选项是:

  1. 获取合并最新版本 urllib3 的请求,
  2. 分叉我自己的请求版本并使用它。
4

1 回答 1

3

截至今天,您概述的选项是正确的。

有一些关于使用 urllib3 系统版本的 Requests 设置的讨论,但我不相信它已经实现。一些 Linux 发行版的打包实际上修补了请求以使用 urllib3 的系统版本(并相应地对其进行固定),因此这不是一个不常见的请求。

至于将 certifi 与 urllib3 一起使用,它在文档的安全部分中进行了概述。这是主要部分:

import urllib3
import certifi

http = urllib3.PoolManager(
    cert_reqs='CERT_REQUIRED', # Force certificate check.
    ca_certs=certifi.where(),  # Path to the Certifi bundle.
)

# You're ready to make verified HTTPS requests.
try:
    r = http.request('GET', 'https://example.com/')
except urllib3.exceptions.SSLError as e:
    # Handle incorrect certificate error.
    ...
于 2015-01-27T04:30:57.890 回答