【问题标题】:`pip3 search aiohttp` shows updated version, but won't install`pip3 search aiohttp` 显示更新版本,但不会安装
【发布时间】:2019-02-02 13:04:15
【问题描述】:

我正在安装一个依赖于 aiohttp 的 python 包,版本 >=3。 pip3 search aiohttp 返回:

aiohttp (3.3.2)  - Async http client/server framework (asyncio)
  INSTALLED: 2.3.10
  LATEST:    3.3.2

那么为什么pip3 install --upgrade --user aiohttp 回复说它已经是最新的,而pip3 install --user aiohttp==3.3.2 说:

Could not find a version that satisfies the requirement aiohttp==3.3.2 [... snip ...] No matching distribution found for aiohttp==3.3.2

我正在运行 Ubuntu 16.04、Python v.3.5.2 和 pip3 v.18.0。后者是从apt包python3-pip升级到系统的v.8.1.1。 Pip3 本地升级使用pip3 upgrade --user,以免与系统包冲突。

【问题讨论】:

  • pip 搜索糟糕的原因有很多,可能很快就会被删除:github.com/pypa/pip/issues/5216
  • @wim - 我明白了。这与 jwodder 的回答(如下)一起澄清了问题。谢谢。

标签: python-3.x pip


【解决方案1】:

aiohttp 版本 3 要求 Python 至少为 3.5.3 版本; the documentation explains:

为什么不 3.5.0?因为3.5.3有一个关键的变化:asyncio.get_event_loop()返回的是运行循环而不是default,这可能不同,例如:

loop = asyncio.new_event_loop()
loop.run_until_complete(f())

注意,asyncio.set_event_loop() 未被调用,默认循环不等于实际执行的循环。

因此,在 Python 3.5.2 或更早版本上运行的 pip 在安装时将忽略 aiohttp v3;较新版本仍然显示在pip search 下的事实可以说是一个错误。

【讨论】:

  • 我明白了,谢谢。附属问题:我可以使用--user 以某种方式升级到 python 3.5.3 吗?还是我必须去一个虚拟环境(我听说过但还没有弄清楚如何使用)?
  • +1 另请参阅元数据 "requires_python": ">=3.5.3",这使得 [recent versions of] pip 在此处忽略它:pypi.org/pypi/aiohttp/json
  • @Diagon:不,你不能使用 pip 来升级 Python 本身,并且 virtualenv 只会让你使用系统上已经存在的 Python 版本。
猜你喜欢
  • 1970-01-01
  • 2015-11-15
  • 2020-11-23
  • 2018-10-21
  • 1970-01-01
  • 2023-01-20
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多