Python PIP Install throws TypeError: неподдерживаемый тип операндов для - =: 'Retry' и 'int'

Использование pip installдля любого модуля, очевидно, в моей системе Ubuntu 16.04 с python 2.7.11+ вызывает эту ошибку:

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

Что не так с пипсом? Как я могу переустановить его, если это необходимо?

Обновление: полная трассировка ниже

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'

python,pip,

56

Ответов: 13


56 ов

Ubuntu поставляется с версией PIP от precambrian, и именно так вам нужно обновить его, если вы не хотите тратить часы и часы на отладку проблем, связанных с пипсом.

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

Как вы заметили, я включил информацию как для Python 2.x, так и для 3.x


Если вы находитесь за прокси-сервером, перед началом установки вы должны выполнить дополнительные шаги по настройке. Вы должны установить переменную окружения http_proxy на адрес прокси-сервера. Использование bash выполняется с помощью команды

export http_proxy="http://user:pass@my.site:port/" 

Вы также можете предоставить

--proxy=[user:pass@]url:port 

параметр to pip. [user:pass@]Часть не является обязательной.


10

Прежде всего, эта проблема существует из-за проблем с сетью, а удаление и повторная установка все не будет иметь большой поддержки. Возможно, вы находитесь за прокси-сервером, и в этом случае вам нужно установить прокси-сервер.

Но в моем случае я столкнулся с проблемой, потому что я не был за прокси. Как правило, я работаю за прокси-сервером, но при работе на дому я установил прокси-сервер в None в настройках сети.

Но я все еще получал те же ошибки даже после удаления настроек прокси-сервера.

Итак, когда я напечатал

env | grep proxy

Я нашел что-то вроде этого:

http_proxy=http://127.0.0.1:1234/

И именно по этой причине я все еще получал ту же ошибку, даже когда мне казалось, что я удалил настройки прокси-сервера.

Чтобы отключить этот прокси-сервер, введите

unset http_proxy

Следуйте одному и тому же подходу для всех других записей, таких как https_proxy.


Здесь происходит то, что продаваемые версии запроса / urllib3 сталкиваются при импорте в двух разных местах (один и тот же код, но разные имена). Если у вас есть сетевая ошибка, она не будет пытаться получить колесо, но с ошибкой выше. См. Здесь для более глубокого погружения в эту ошибку.

Для решения с системным протоколом см. Выше .

Если у вас есть эта проблема в virtualenv, построенном python -m venv(который все еще копирует колеса /usr/share/python-wheels, даже если у вас есть пипетка отдельно), самый простой способ «исправить» это выглядит следующим образом:

  1. создать virtualenv: /usr/bin/python3.6 -m venv ...
  2. установить requestsв среду (это может вызвать ошибку выше):<venv>/bin/pip install requests
  3. удалите скопированные версии, requestsкоторые будут использоваться pip:rm <venv>/share/python-wheels/{requests,chardet,urllib3}-*.whl

Теперь <venv>/bin/pipиспользуется установленная версия, requestsкоторая имеет urllib3.


порт 443 не открыт, просто разрешите пользовательский порт tcp 443, если на AWS еще открыть порт 443 для исходящих соединений ...

питон, пип,
Похожие вопросы