pip fails with "TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'"

Created on 8 Oct 2017  路  7Comments  路  Source: pypa/pip

  • Pip version: python-pip (9.0.1-2+rpt1)
  • Python version: 2.7
  • Operating system: Linux

Description:

pip is trying to install rsa<=3.5.0,>=3.1.2 (from awscli), and randomly fails with this error:
TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'. By random, I mean it works about 80% of the time, fails about 20%, and I don't why it fails.

I don't speak python, so I think it's pip that's failing, and not something in the rsa module as it's being installed.

What I've run:

Collecting rsa<=3.5.0,>=3.1.2 (from awscli)
Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 353, in run
    wb.build(autobuilding=True)
  File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 749, in build
    self.requirement_set.prepare_files(self.finder)
  File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 380, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
  File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 554, in _prepare_file
    require_hashes
  File "/usr/lib/python2.7/dist-packages/pip/req/req_install.py", line 278, in populate_link
    self.link = finder.find_requirement(self, upgrade)
  File "/usr/lib/python2.7/dist-packages/pip/index.py", line 465, in find_requirement
    all_candidates = self.find_all_candidates(req.name)
  File "/usr/lib/python2.7/dist-packages/pip/index.py", line 423, 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 568, in _get_pages
    page = self._get_page(location)
  File "/usr/lib/python2.7/dist-packages/pip/index.py", line 683, in _get_page
    return HTMLPage.get_page(link, session=self.session)
  File "/usr/lib/python2.7/dist-packages/pip/index.py", line 792, in get_page
    "Cache-Control": "max-age=600",
  File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/sessions.py", line 501, in get
    return self.request('GET', url, **kwargs)
  File "/usr/lib/python2.7/dist-packages/pip/download.py", line 386, in request
    return super(PipSession, self).request(method, url, *args, **kwargs)
  File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/sessions.py", line 488, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/sessions.py", line 609, in send
    r = adapter.send(request, **kwargs)
  File "/usr/share/python-wheels/CacheControl-0.11.7-py2.py3-none-any.whl/cachecontrol/adapter.py", line 47, in send
    resp = super(CacheControlAdapter, self).send(request, **kw)
  File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/adapters.py", line 423, in send
    timeout=timeout
  File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/connectionpool.py", line 643, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/util/retry.py", line 315, in increment
    total -= 1
TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'
downstream auto-locked

Most helpful comment

Just wanted to note that I had a similar error which was caused by the (docker) machine not being able to connect to the internet.
Check if you have connectivity, it may be the cause.
Seems like an non descriptive error to me and it would be nice if it gives a hint about the actual error.

All 7 comments

This also happens to me (pip 9.0.1, Ubuntu, Python 2.7) with an almost identical stacktrace.

What I think is happening here is the fact that the network connectivity is poor and requests is set up to retry the downloads but there is a bug in the retry logic.

This can be a bug in either pip, requests or urllib3. Yay for runtime type checking :)

I'm not sure about the connectivity aspect, at least between my machine and the intarwebs, although perhaps the remote server could have issues. The error has only occurred when installing the rsa module. I couldn't say if the whatever's trying to install it is going to a different server than the other modules, or if they're all coming from the same repository.

pip is a self contained python package.
The fact that your traceback shows other packages being imported means that you are using a patched version of pip (certainly Debian/Ubuntu) so you'll have to report the bug to them.
Cf #3943.

Just wanted to note that I had a similar error which was caused by the (docker) machine not being able to connect to the internet.
Check if you have connectivity, it may be the cause.
Seems like an non descriptive error to me and it would be nice if it gives a hint about the actual error.

In my case I've found that it worked after disabling IPv6. It seems the PIP code doesn't deal well with the fetching connection over IPv6 ...

@pamribeirox, thanks a lot! In my case it was also IPv6 issue.

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

Was this page helpful?
0 / 5 - 0 ratings