这个错误是因为 httpcore 从 1.0.0 版本开始,把异步支持(asyncio)改成了可选依赖,默认不再自动安装。
所以你需要手动安装带有 asyncio 支持的版本。在终端运行以下命令即可解决:
pip install 'httpcore[asyncio]'
💡 补充说明
如果你使用的是 pipenv,也可以在 Pipfile 中指定版本,确保兼容性:
httpcore = "<=0.15"
安装完成后,建议检查一下 httpcore 和 httpx 的版本是否匹配,避免因版本冲突导致其他错误。
HTTP Core 包提供了一个最低级别的 HTTP 客户端,能够 只有一件事。发送HTTP请求。
它不提供基于 API 的任何高级模型抽象, 不处理重定向、多部分上传、构建认证头部, 透明的HTTP缓存、URL解析、会话Cookie处理, 内容或字符集解码、处理JSON、基于环境的配置 默认,或者任何那些爵士乐。
HTTP Core 确实做的一些事情:
- 发送HTTP请求。
- 线程安全/任务安全连接池。
- HTTP(S) 代理和 SOCKS 代理支持
- 支持 HTTP/1.1 和 HTTP/2。
- 提供同步和异步两种接口。
- 和 的异步后端支持 。
asynciotrio
要求
Python 3.8+
安装
仅支持 HTTP/1.1 时,安装时有:
$ pip install httpcore
还有许多可选的附加内容……
$ pip install httpcore['asyncio,trio,http2,socks']
发送请求
发送HTTP请求:
import httpcore
response = httpcore.request("GET", "https://www.example.com/")
print(response)
# <Response [200]>
print(response.status)
# 200
print(response.headers)
# [(b'Accept-Ranges', b'bytes'), (b'Age', b'557328'), (b'Cache-Control', b'max-age=604800'), ...]
print(response.content)
# b'<!doctype html>\n<html>\n<head>\n<title>Example Domain</title>\n\n<meta charset="utf-8"/>\n ...'
为了方便,提供了顶层功能。实际上,无论你在使用什么时候,你都会想使用它提供的连接池功能。httpcore.request()httpcore
import httpcore
http = httpcore.ConnectionPool()
response = http.request("GET", "https://www.example.com/")
准备好开始后,去文档页面看看。
动机
你可能不想直接用HTTP Core。如果 你正在用 Python 写类似代理服务的东西,你只是想要 一个最低级别的,但更常见的是你会想用的 更高级的客户端库,如 。httpx
其动机是:httpcore
- 提供一个可重用的低级客户端库,其他软件包可以在其基础上构建。
- 为了在网络代码和客户端逻辑之间提供真正清晰的接口分离, 这样每个人都更容易理解和单独推理。
依赖关系
该包具有以下依赖关系……httpcore
h11certifi
还有以下可选的附加内容……
anyio– 要求。pip install httpcore['asyncio']trio– 要求。pip install httpcore['trio']h2– 要求。pip install httpcore['http2']socksio– 要求。pip install httpcore['socks']
版本管理
我们的版本控制策略使用SEMVER。
有关软件包版本之间的变更,请参阅我们的项目变更日志。
我们建议你将需求固定为最新的主要版本,或更具体的版本范围:
pip install 'httpcore==1.*'
原创文章,作者:云东方,如若转载,请注明出处:https://www.yundongfang.com/Yun865.html