118 votes

Python PIP Install jette TypeError: unsupported operand type(s) -=: 'Retry' et de 'int'

À l'aide de pip install pour tout module apparemment sur mon Ubuntu 16.04 système avec python 2.7.11+ lance ce message d'erreur:

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

Quel est le problème avec le pip? Comment pourrais-je le réinstaller, si nécessaire?

Mise à jour: Plein de sperme est ci-dessous

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'

90voto

sorin Points 23747

Ubuntu est livré avec une version de PIP à partir du précambrien, et c'est la façon dont vous avez à la mise à jour si vous ne voulez pas passer des heures et des heures de débogage pip questions connexes.

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

Comme vous l'avez remarqué, j'inclus les informations pour Python 2.x et 3.x

38voto

Livruen Nati Points 271

Si vous êtes derrière un proxy, vous devez effectuer certaines des étapes de configuration supplémentaires avant de commencer l'installation. Vous devez définir la variable d'environnement http_proxy à l'adresse du proxy. À l'aide de bash ceci est accompli avec la commande

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

Vous pouvez également fournir le

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

paramètre de pip. L' [user:pass@] partie est facultative.

17voto

thisisashwani Points 892

Tout d'abord, ce problème existe à cause de problèmes de réseau, et de le désinstaller et re-installer tout ne sera pas d'une grande aide. Probablement vous êtes derrière un proxy, et dans ce cas, vous devez configurer le proxy.

Mais dans mon cas, j'ai été confronté au problème parce que je n'étais pas derrière un proxy. Généralement, je travaille derrière un proxy, mais lorsque vous travaillez de la maison, j'ai mis le proxy à Aucun dans les paramètres Réseau.

Mais j'ai toujours les mêmes erreurs, même après avoir retiré les paramètres de proxy.

Donc, quand j'ai fait le type de

env | grep proxy

J'ai trouvé quelque chose comme ceci :

http_proxy=http://127.0.0.1:1234/

Et ce fut la raison que j'ai toujours la même erreur, même quand je pensais que j'avais enlevé les paramètres de proxy.

Pour désactiver ce proxy, tapez

unset http_proxy

Suivre la même démarche pour tous les autres entrées, telles que https_proxy.

14voto

Jan Katins Points 1329

Ce qui se passe ici est que le vendored versions de la demande/urllib3 choc lorsqu'ils sont importés dans deux endroits différents (même code, mais des noms différents). Ensuite, si vous avez une erreur réseau, il n'a pas de nouvelle tentative pour obtenir la roue, mais échoue avec l'erreur ci-dessus. Voir ici pour approfondir cette erreur.

Pour la solution avec le système de pep, voir ci-dessus.

Si vous avez ce problème dans un virtualenv construit par python -m venv (qui copie toujours les roues de /usr/share/python-wheels, même si vous avez pip installé séparément), la façon la plus simple de le "réparer" semble être:

  1. créer le virtualenv: /usr/bin/python3.6 -m venv ...
  2. installez requests dans l'environnement (ce qui pourrait soulever l'erreur ci-dessus): <venv>/bin/pip install requests
  3. retirez le copié les versions d' requests qui serait utilisé par le pip: rm <venv>/share/python-wheels/{requests,chardet,urllib3}-*.whl

Maintenant, un <venv>/bin/pip utilise la version installée d' requests qui a urllib3 vendored.

7voto

Deepak Points 346

le port 443 est pas ouverte, juste permettre personnalisé de port tcp 443 si sur AWS, sinon ouvrir le port 443 pour les connexions sortantes ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X