Python PIP安装抛出TypeError:不支持的操作数类型 - =:'Retry'和'int'

dev*_*tor 96 python pip

使用pip install了显然与蟒蛇2.7.11+我的Ubuntu 16.04系统中的任何模块抛出这个错误:

TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'
Run Code Online (Sandbox Code Playgroud)

pip有什么问题?如有必要,我该如何重新安装?

更新:完整回溯如下

sunny@sunny:~$ pip install requests
Collecting requests
Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 209, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 328, in run
    wb.build(autobuilding=True)
  File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 748, in build
    self.requirement_set.prepare_files(self.finder)
  File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 360, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
  File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 512, in _prepare_file
    finder, self.upgrade, require_hashes)
  File "/usr/lib/python2.7/dist-packages/pip/req/req_install.py", line 273, in populate_link
    self.link = finder.find_requirement(self, upgrade)
  File "/usr/lib/python2.7/dist-packages/pip/index.py", line 442, in find_requirement
    all_candidates = self.find_all_candidates(req.name)
  File "/usr/lib/python2.7/dist-packages/pip/index.py", line 400, in find_all_candidates
    for page in self._get_pages(url_locations, project_name):
  File "/usr/lib/python2.7/dist-packages/pip/index.py", line 545, in _get_pages
    page = self._get_page(location)
  File "/usr/lib/python2.7/dist-packages/pip/index.py", line 648, in _get_page
    return HTMLPage.get_page(link, session=self.session)
  File "/usr/lib/python2.7/dist-packages/pip/index.py", line 757, in get_page
    "Cache-Control": "max-age=600",
  File "/usr/share/python-wheels/requests-2.9.1-py2.py3-none-any.whl/requests/sessions.py", line 480, in get
    return self.request('GET', url, **kwargs)
  File "/usr/lib/python2.7/dist-packages/pip/download.py", line 378, in request
    return super(PipSession, self).request(method, url, *args, **kwargs)
  File "/usr/share/python-wheels/requests-2.9.1-py2.py3-none-any.whl/requests/sessions.py", line 468, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/share/python-wheels/requests-2.9.1-py2.py3-none-any.whl/requests/sessions.py", line 576, in send
    r = adapter.send(request, **kwargs)
  File "/usr/share/python-wheels/CacheControl-0.11.5-py2.py3-none-any.whl/cachecontrol/adapter.py", line 46, in send
    resp = super(CacheControlAdapter, self).send(request, **kw)
  File "/usr/share/python-wheels/requests-2.9.1-py2.py3-none-any.whl/requests/adapters.py", line 376, in send
    timeout=timeout
  File "/usr/share/python-wheels/urllib3-1.13.1-py2.py3-none-any.whl/urllib3/connectionpool.py", line 610, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "/usr/share/python-wheels/urllib3-1.13.1-py2.py3-none-any.whl/urllib3/util/retry.py", line 228, in increment
    total -= 1
TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'
Run Code Online (Sandbox Code Playgroud)

sor*_*rin 81

Ubuntu附带了一个来自前寒武纪的PIP版本,如果您不想花费数小时和数小时来调试与pip相关的问题,那么就必须升级它.

apt-get remove python-pip python3-pip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
python3 get-pip.py
Run Code Online (Sandbox Code Playgroud)

正如您所观察到的,我包含了Python 2.x和3.x的信息

  • 这个问题与pip无关.堆栈跟踪显示获取程序包的请求失败,表明存在网络问题.告诉OP重新安装pip只是一个弯路. (40认同)
  • 执行python get-pip.py失败,并显示以下“ OSError:[Errno 13]权限被拒绝:'/ usr / local / lib / python2.7 / site-packages / pip-8.1.2.dist-info'“ (2认同)
  • @mirror,使用sudo因为get-pip.py会尝试安装pip (2认同)
  • 这是正确的答案,罪魁祸首是对“pip”的规范修补,现在几个版本仍未修复:https://github.com/pypa/pip/issues/4779 (2认同)
  • 用在树莓上。无法再运行“点子”。只能运行pip3。我必须添加一个符号链接:ln -s / usr / local / bin / pip / usr / bin / pip从此答案中获取(并修改):/sf/ask/2079876361/我使用pip-3-with-python-3-4#29712690 (2认同)

小智 31

如果您位于代理之后,则必须在开始安装之前执行一些额外的配置步骤.您必须将环境变量http_proxy设置为代理地址.使用bash,这是通过命令完成的

export http_proxy="http://user:pass@my.site:port/" 
Run Code Online (Sandbox Code Playgroud)

你也可以提供

--proxy=[user:pass@]url:port 
Run Code Online (Sandbox Code Playgroud)

pip的参数.该[user:pass@]部分是可选的.


小智 19

更新setuptools对我来说效果很好。

sudo pip install --upgrade setuptools
Run Code Online (Sandbox Code Playgroud)

  • 这个命令在 Debian9 上给我带来了同样的 TypeError 。这不是通用解决方案。 (5认同)
  • 这对我的拉斯皮安伸展运动也很有效。请接受此答案,以便更容易找到 (3认同)

thi*_*ani 14

首先,由于网络问题,存在此问题,卸载和重新安装一切都不会有太大帮助.可能你落后于代理,在这种情况下你需要设置代理.

但就我而言,我遇到了问题,因为我并没有落后于代理.通常,我在代理后面工作,但在家工作时,我在网络设置中将代理设置为无.

但是,即使删除了代理设置,我仍然会遇到相同的错误.

所以,当我打字的时候

env | grep proxy
Run Code Online (Sandbox Code Playgroud)

我找到了这样的东西:

http_proxy=http://127.0.0.1:1234/
Run Code Online (Sandbox Code Playgroud)

这就是我仍然得到同样错误的原因,即使我认为我已经删除了代理设置.

要取消设置此代理,请键入

unset http_proxy
Run Code Online (Sandbox Code Playgroud)

对所有其他条目采用相同的方法,例如https_proxy.


Jan*_*ins 12

这里发生的是在两个不同的地方(相同的代码,但名称不同)导入时,request/urllib3的销售版本会发生冲突.如果您有网络错误,它不会重试获取方向盘,但会因上述错误而失败.请参阅此处以深入了解此错误.

有关系统点的解决方案,请参见上文.

如果你在virtualenv中有这个问题python -m venv(它仍然复制轮子/usr/share/python-wheels,即使你单独安装了pip),"修复"它的最简单方法似乎是:

  1. 创建virtualenv: /usr/bin/python3.6 -m venv ...
  2. 安装requests到环境中(这可能会引发上述错误):<venv>/bin/pip install requests
  3. 删除requestspip将使用的复制版本:rm <venv>/share/python-wheels/{requests,chardet,urllib3}-*.whl

现在<venv>/bin/pip使用已安装的requestsurllib3版本.


Dee*_*pak 7

端口443未打开,只允许自定义tcp端口443,如果在AWS上打开端口443用于出站连接...


小智 5

只是升级点对我有用:

pip install --upgrade pip

  • 运行此非常精确的命令时,错误发生在我身上:( (5认同)