24

我在 Windows 8 上使用 Python 2.7 64 位。我安装了 Requests 2.3 版。我正在尝试运行此导入语句,作为在我的代码中引入重试次数的一部分:

from requests.packages.urllib3.util import Retry

我也安装了 urllib3(我刚刚通过 Pip 安装了它)。我收到错误消息:

Traceback (most recent call last):
  File "C:\Python27\counter.py", line 3, in <module>
    from requests.packages.urllib3.util import Retry
ImportError: cannot import name Retry

谁能告诉我这是为什么?是否有任何其他我不知道的依赖项可以成功运行这行代码?

谢谢

4

2 回答 2

24

您可能需要更新版本的请求。我刚用 v2.5.1 试过:

from requests.packages.urllib3.util import Retry

似乎工作。仅供参考:最新版本是v2.5.3,值得升级。

此外,如果您单独安装了相当新的 urllib3 版本,这也应该有效:

from urllib3.util import Retry

不幸的是,我们检查了in和的具体isinstance类型,因此这两种类型的对象可能不能完全互换。(如果有人想解决这个问题,我会在 PR 上 +1。)RetryPoolManagerConnectionPoolRetry

目前,如果您打算使用具有版本的Retry对象,则需要直接从那里导入它。requestsurllib3

于 2015-03-06T22:11:20.370 回答
13

requests 在 request.package 中不再有 vendored 模块

您需要直接引用 urllib3

于 2017-05-27T06:16:33.417 回答