[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