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.


8 ов

Здесь происходит то, что продаваемые версии запроса / 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.


5 ов

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

питон, пип,
Похожие вопросы
Яндекс.Метрика