ubuntu1604使用pip工具安装configParser出错。

1.遇到的问题(与下属问题雷同)

Using pip install for any module apparently on my Ubuntu 16.04 system with python 2.7.11+ throws this error:

TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'

What is wrong with pip? How could I reinstall it, if necessary?

Update: Full traceback is below

具体报错如下:

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'

2.问题分析

  • @MartijnPieters Sure, appending that info –  devautor  May 28 '16 at 5:10
  • So where did those wheels come from? pip normally would use an embedded requests package, and requests normally would use an embedded urllib3 package. Those wheels are not embedded versions, and are probably incompatible with the pip subclass of some of this code. move /usr/share/python-wheels aside perhaps? –  Martijn Pieters   May 28 '16 at 5:16 
  • I'd expect pip to use pip/_vendor/requests/ and pip/_vendor/requests/packages/urllib3/, not /usr/share/python-wheels/requests-2.9.1-py2.py3-none-any.whl/requests or /usr/share/python-wheels/urllib3-1.13.1-py2.py3-none-any.whl/urllib3. –  Martijn Pieters May 28 '16 at 5:17 
  • I have totally no idea about this! Where should I be looking for info on this, or what could I do? –  devautor May 28 '16 at 5:18
  • Sorry, no easy answer here; just trying to diagnose your issues. The traceback is unexpected and points to a clash between versions. Which is why normally requests and pip embed their dependencies. Your traceback shows any embedded versions are not being used, but why that is I don't know. –

  • 3.问题解决

Ubuntu comes with a version of PIP from precambrian and that's how you have to upgrade it if you do not want to spend hours and hours debugging pip related issues.

apt-get remove python-pip python3-pip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
python3 get-pip.py

As you observed I included information for both Python 2.x and 3.x

4.参考博客

https://stackoverflow.com/questions/37495375/python-pip-install-throws-typeerror-unsupported-operand-types-for-retry/37531821

37 down vote

Ubuntu comes with a version of PIP from precambrian and that's how you have to upgrade it if you do not want to spend hours and hours debugging pip related issues.

apt-get remove python-pip python3-pip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
python3 get-pip.py

As you observed I included information for both Python 2.x and 3.x

此时,可使用pip2命令(pip2 -V)

pip命令的路径由/usr/bin/pip变为/usr/local/bin/pip.....

(/usr/local/bin/pip -V)

你可能感兴趣的:(ubuntu)