[Python-modules-team] Bug#880472: TypeError when installing packages in virtual environment

Brad Warren bmw at eff.org
Tue Oct 31 22:08:56 UTC 2017


Package: virtualenv
Version: 15.1.0+ds-1

If a network error occurs while installing a package with pip in a
virtual environment, a TypeError is raised when pip attempts to retry
the request. To cause this, I installed virtualenv and python and ran:

virtualenv venv

. ./venv/bin/activate

After this, we need to ensure a network error occurs. I did this by
turning off the internet connection on the machine entirely. Other
people have encountered this problem when their firewall was blocking
outbound traffic from pip. With my network disabled, I saw the following
behavior (running from within the Debian Stretch Docker image):

(venv) root at 6d8d098339b9:~# pip install certbot
Collecting certbot
Exception:
Traceback (most recent call last):
  File
"/root/venv/local/lib/python2.7/site-packages/pip/basecommand.py", line
215, in main
    status = self.run(options, args)
  File
"/root/venv/local/lib/python2.7/site-packages/pip/commands/install.py",
line 353, in run
    wb.build(autobuilding=True)
  File "/root/venv/local/lib/python2.7/site-packages/pip/wheel.py", line
749, in build
    self.requirement_set.prepare_files(self.finder)
  File
"/root/venv/local/lib/python2.7/site-packages/pip/req/req_set.py", line
380, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
  File
"/root/venv/local/lib/python2.7/site-packages/pip/req/req_set.py", line
554, in _prepare_file
    require_hashes
  File
"/root/venv/local/lib/python2.7/site-packages/pip/req/req_install.py",
line 278, in populate_link
    self.link = finder.find_requirement(self, upgrade)
  File "/root/venv/local/lib/python2.7/site-packages/pip/index.py", line
465, in find_requirement
    all_candidates = self.find_all_candidates(req.name)
  File "/root/venv/local/lib/python2.7/site-packages/pip/index.py", line
423, in find_all_candidates
    for page in self._get_pages(url_locations, project_name):
  File "/root/venv/local/lib/python2.7/site-packages/pip/index.py", line
568, in _get_pages
    page = self._get_page(location)
  File "/root/venv/local/lib/python2.7/site-packages/pip/index.py", line
683, in _get_page
    return HTMLPage.get_page(link, session=self.session)
  File "/root/venv/local/lib/python2.7/site-packages/pip/index.py", line
792, in get_page
    "Cache-Control": "max-age=600",
  File
"/root/venv/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 "/root/venv/local/lib/python2.7/site-packages/pip/download.py",
line 386, in request
    return super(PipSession, self).request(method, url, *args, **kwargs)
  File
"/root/venv/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
"/root/venv/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
"/root/venv/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
"/root/venv/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/adapters.py",
line 423, in send
    timeout=timeout
  File
"/root/venv/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
"/root/venv/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'
(venv) root at 6d8d098339b9:~#

This problem does not occur if you reinstall the same version of pip
from PyPI by running pip install -I pip==9.0.1. I've also reproduced
this problem on Debian Unstable.



More information about the Python-modules-team mailing list