Utiliser pip install
pour n'importe quel module apparemment sur mon système Ubuntu 16.04 avec python 2.7.11+ lève cette erreur:
TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'
Quel est le problème avec pip? Comment pourrais-je le réinstaller, si nécessaire?
Mise à jour: la trace complète est en 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'
Ubuntu est livré avec une version de PIP de Précambrien et c’est la façon dont vous devez la mettre à niveau si vous ne voulez pas passer des heures et des heures à résoudre les problèmes liés aux pip.
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 observé, j'ai inclus des informations pour Python 2.x et 3.x
Si vous êtes derrière un proxy, vous devez effectuer quelques étapes de configuration supplémentaires avant de démarrer l'installation. Vous devez définir la variable d’environnement http_proxy sur l’adresse proxy. En utilisant bash, ceci est accompli avec la commande
export http_proxy="http://user:[email protected]:port/"
Vous pouvez également fournir le
--proxy=[user:pass@]url:port
paramètre à piper. La portion [user:pass@]
est facultative.
Tout d'abord, ce problème est dû à des problèmes de réseau. Désinstaller et réinstaller tout ne vous sera d'aucune aide. Vous êtes probablement derrière un proxy et dans ce cas, vous devez définir un proxy.
Mais dans mon cas, je faisais face au problème parce que je n'étais pas derrière un proxy. En général, je travaille derrière un proxy, mais lorsque je travaille à domicile, je règle le proxy sur Aucun dans les paramètres réseau.
Mais je continuais à avoir les mêmes erreurs même après avoir supprimé les paramètres de proxy.
Donc, quand j'ai tapé
env | grep proxy
J'ai trouvé quelque chose comme ça:
http_proxy=http://127.0.0.1:1234/
Et c’est la raison pour laquelle j’avais toujours la même erreur, même lorsque je pensais avoir supprimé les paramètres de proxy.
Pour supprimer ce proxy, tapez
unset http_proxy
Suivez la même approche pour toutes les autres entrées, telles que https_proxy.
Ce qui se passe ici, c’est que les versions vendorées de request/urllib3 s’entrechoquent lorsqu’elles sont importées à deux endroits différents (même code, mais noms différents). Si vous avez ensuite une erreur de réseau, il ne réessaie pas pour obtenir la roue, mais échoue avec l'erreur ci-dessus. Voir ici pour une analyse plus approfondie de cette erreur.
Pour la solution avec pip système, voir ci-dessus .
Si vous rencontrez ce problème dans un virtualenv construit avec python -m venv
(qui copie toujours les roues de /usr/share/python-wheels
, même si vous avez installé pip séparément), le moyen le plus simple de «réparer» les problèmes semble être:
/usr/bin/python3.6 -m venv ...
requests
dans l'environnement (cela pourrait provoquer l'erreur ci-dessus): <venv>/bin/pip install requests
requests
qui seraient utilisées par pip: rm <venv>/share/python-wheels/{requests,chardet,urllib3}-*.whl
Désormais, un <venv>/bin/pip
utilise la version installée de requests
qui a été vendue par urllib3.
le port 443 n'est pas ouvert, autorisez simplement le port TCP 443 personnalisé si sur AWS, ouvrez le port 443 pour les connexions sortantes ...
La mise à jour de setuptools a bien fonctionné pour moi.
Sudo pip install --upgrade setuptools
Je recevais cette erreur pour toute installation de paquet utilisant pip
. Plus tard, j'ai découvert que pip nécessite que les variables http_proxy
et https_proxy
soient exécutées derrière un proxy. Après avoir défini ces 2 variables d’environnement, ce problème est résolu.
export http_proxy=http://<username>:<passowrd>@<proxy_ip>:<proxy_port>/
export https_proxy=https://<username>:<passowrd>@<proxy_ip>:<proxy_port>/
Juste mise à niveau pip a fonctionné pour moi:
pip install --upgrade pip
Cela m’arrive lorsque je travaille derrière le proxy ..__ Je résous ce problème simplement en
pip install --proxy http: // proxyAddress: Port Package_To_Be_Installed
J'ai essayé la solution répondue ci-dessus:
apt-get remove python-pip python3-pip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
python3 get-pip.py
Quand j'ai essayé
python get-pip.py
python3 get-pip.py
J'ai eu ce message
Could not install packages due to an EnvironmentError:
[Errno 13] Permission denied: /usr/bin/pip3 Consider using the --user
option or check the permissions.
J'ai fait ce qui suit et ça marche
python3 -m venv env
source ./env/bin/activate
Sudo apt-get update
apt-get remove python-pip python3-pip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
python3 get-pip.py
pip3 install pip
Sudo easy_install pip
pip install --upgrade pip
J'ai eu cette erreur lorsque j'essayais de créer une virtualenv
avec la commande virtualenv myVirtualEnv
. Je viens d'ajouter une Sudo
avant la commande; tout a résolu.
Je faisais face au même problème en essayant d'installer l'outil awscli sur une instance ec2 ..__ J'ai modifié le groupe de sécurité pour autoriser l'accès entrant et sortant au port 443, ce qui a résolu le problème.
Pour ma part, il s’avère que wlan0 était en panne, ce qui m’a empêché de me connecter. Ainsi, s’assurer que wlan0 était actif permettait à pip/pip3 de fonctionner sans problème.
Ceci est la solution de travail à ce problème que j'ai trouvé.
Sudo apt-get clean
cd /var/lib/apt
Sudo mv lists lists.old
Sudo mkdir -p lists/partial
Sudo apt-get clean
Sudo apt-get update
Solution:
1. Sudo apt remove python-pip
2. pip3 install pip
(ou installez pip par get-pip.py )
Pourquoi:
Cette erreur est survenue sur le pip 8.0.1 installé par apt-get. Et ne s'est produit que lorsque votre réseau est instable.
Si vous avez un pip installé avec apt, il cache le pip que vous avez installé par d'autres moyens, vous devriez donc d'abord supprimer apt.
J'ai déconnecté le réseau et testé les versions 8.0.1, 9.0.3, 10.x installées avec pip3 ou get-pip.py, aucune erreur ne s'est produite. Donc, je pense que seule la version apt du pip 8.0.1 a ce bogue, les autres vont bien.
Dans mon cas, j’avais ouvert Pycharm en mode Sudo et exécutais pip install nltk dans un terminal pycharm qui affichait cette erreur. courir avec Sudo pip install résout l'erreur.
J'ai aussi eu ce problème. Initialement, un proxy a été défini et fonctionne bien. Ensuite, je me suis connecté à un réseau où il ne passe pas par un proxy. Après avoir désactivé proxy proxy, obtenez à nouveau des travaux.
unset http_proxy; unset http_prox; unset HTTP_PROXY; unset HTTPS_PROXY
Bizarrement, si je supprime le proxy de l'environnement et que je l'ajoute à la ligne de commande, cela fonctionne pour moi. Par exemple, pour mettre à niveau pip
lui-même:
env http_proxy= https_proxy= pip install pip --upgrade --proxy 'http://proxy-url:80'
Mon problème était d'avoir le proxy dans l'environnement. Il semblerait que pip n’honore que l’argument en question.