Usar pip install
para qualquer módulo aparentemente em meu sistema Ubuntu 16.04 com python 2.7.11+ gera este erro:
TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'
O que há de errado com o pip? Como posso reinstalá-lo, se necessário?
Atualização: Traceback completo está abaixo
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'
pip
normalmente usaria umrequests
pacote embutido erequests
normalmente usaria umurllib3
pacote embutido . Essas rodas não são versões embutidas e provavelmente são incompatíveis com apip
subclasse de algum deste código. mover para o/usr/share/python-wheels
lado talvez?pip
usarpip/_vendor/requests/
epip/_vendor/requests/packages/urllib3/
, não/usr/share/python-wheels/requests-2.9.1-py2.py3-none-any.whl/requests
ou/usr/share/python-wheels/urllib3-1.13.1-py2.py3-none-any.whl/urllib3
.requests
epip
incorporar suas dependências. Seu traceback mostra que nenhuma versão embutida está sendo usada, mas não sei por que isso acontece.Respostas:
O Ubuntu vem com uma versão do PIP do pré-cambrian e é assim que você deve atualizá-lo se não quiser gastar horas e horas depurando problemas relacionados ao pip.
Como você observou, incluí informações para Python 2.xe 3.x
fonte
pip
que permanece sem correção por vários lançamentos agora: github.com/pypa/pip/issues/4779Se você estiver atrás de um proxy, deve executar algumas etapas de configuração extras antes de iniciar a instalação. Você deve definir a variável de ambiente http_proxy para o endereço do proxy. Usando o bash, isso é feito com o comando
Você também pode fornecer o
parâmetro para pip. A
[user:pass@]
porção é opcional.fonte
Atualizar ferramentas de configuração funcionou bem para mim.
fonte
Em primeiro lugar, esse problema existe por causa de problemas de rede, e desinstalar e reinstalar tudo não será de muita ajuda. Provavelmente você está atrás de proxy e, nesse caso, precisa definir o proxy.
Mas, no meu caso, estava enfrentando o problema porque não estava atrás de proxy. Geralmente, trabalho por trás de proxy, mas quando trabalho em casa, defino o proxy como Nenhum nas configurações de rede.
Mas eu ainda estava recebendo os mesmos erros mesmo depois de remover as configurações de proxy.
Então, quando eu digitei
Eu encontrei algo assim:
E esse era o motivo pelo qual ainda recebia o mesmo erro, mesmo quando pensava que havia removido as configurações de proxy.
Para remover este proxy, digite
Siga a mesma abordagem para todas as outras entradas, como https_proxy.
fonte
O que acontece aqui é que as versões vendidas de request / urllib3 entram em conflito quando importadas em dois lugares diferentes (mesmo código, mas nomes diferentes). Se você tiver um erro de rede, ele não tentará obter o volante novamente, mas falhará com o erro acima. Veja aqui um mergulho mais profundo nesse erro.
Para a solução com sistema pip, veja acima .
Se você tiver esse problema em um virtualenv construído por
python -m venv
(que ainda copia as rodas/usr/share/python-wheels
, mesmo se você tiver o pip instalado separadamente), a maneira mais fácil de "consertar" parece ser:/usr/bin/python3.6 -m venv ...
requests
no ambiente (isso pode gerar o erro acima):<venv>/bin/pip install requests
requests
que seriam usadas pelo pip:rm <venv>/share/python-wheels/{requests,chardet,urllib3}-*.whl
Agora, um
<venv>/bin/pip
usa a versão instalada dorequests
urllib3.fonte
/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl
e está corrigido agora (sem virtualenv)./usr/share/python-wheels
,python -m venv
não criará mais um utilizável<venv>/bin/pip
. Portanto, se você remover esses arquivos, certifique-se de não precisar deles. Se você precisar de um pip de sistema e de um pip venv, precisará instalar o sistema com umget-pip.py
(consulte stackoverflow.com/a/37531821/1380673 ) e remover os arquivos whl em cada venv.a porta 443 não está aberta, apenas permita a porta 443 tcp personalizada se na AWS outra abrir a porta 443 para as conexões de saída ...
fonte
Apenas atualizar o pip funcionou para mim:
pip install --upgrade pip
fonte
Tenho o mesmo problema ao instalar um RaspberryPI TFT da Adafruit com pitft.sh / adafruit-pitft.sh .
Não estou feliz com estilos de codificação com erros de algum lugar a serem interpretados de alguma forma - como pode ser visto pelas respostas anteriores.
Observação: A exceção de erro de tipo de retry.py é obviamente um bug, causado por uma atribuição e cálculo inadequados de uma instância da classe Responder a um int com o valor padrão de 10 - em algum lugar no código ... Deve ser corrigido também adicionando um operador local ou corrigindo a atribuição incorreta.
Então, tentei analisar e corrigir o próprio erro primeiro. O erro real no meu caso é o mesmo - retry.py chamado por pip .
O script de instalação adafruit-pitft.sh / pitft.sh tenta aplicar o urllib3 que por sua vez tenta instalar dependências aninhadas por pip , portanto, o mesmo erro.
https://github.com/adafruit/Raspberry-Pi-Installer-Scripts/blob/master/adafruit-pitft.sh
https://github.com/adafruit/Raspberry-Pi-Installer-Scripts
Para a distribuição atual (com base em debian-9.6.0 / stretch):
O seguinte patch - sujo * :) - permite um rastreamento de erro sonoro:
A saída de som com o patch temporário é (exibida duas vezes ...?):
Portanto, no meu caso, na verdade, duas coisas causam o erro, isso pode variar em outros ambientes:
Meu ambiente de instalação está offline de um espelho interno debian + raspbian, portanto, não quero definir o proxy ...
Então, continuei com a instalação manual do componente ausente evdev :
baixe evdev de PyPI (ou, por exemplo, de github.com):
https://pypi.org/project/evdev/
https://files.pythonhosted.org/packages/7e/53/374b82dd2ccec240b7388c65075391147524255466651a14340615aabb5f/evdev-1.1.2.tar.gz
Descompacte e instale manualmente como usuário root - para todas as contas locais, assim detectadas como instaladas:
Chame o script de instalação novamente:
Se você continuar online por acesso PyPI direto :
verifique seu roteamento + firewall para acessar pypi.org
defina um proxy se necessário (http_proxy / https_proxy)
E funciona ..
Espero que isso ajude em outros casos também.
Arno-Can Uestuensoez
----------------------------------------------
Consulte também: problema - 35334: https://bugs.python.org/issue35334
----------------------------------------------
Veja agora também: problema - 1486: https://github.com/urllib3/urllib3/issues/1486
para arquivo: https://github.com/urllib3/urllib3/blob/master/src/urllib3/util/retry.py
fonte
verifique se há problemas de rede para ignorar o código de caso de exceção
No meu caso, eu estava usando um índice personalizado, esse índice não tinha rota e isso acionaria o código do caso de exceção. O bug do caso de exceção ainda existe e mascara o problema real, no entanto, consegui contornar isso testando a conectividade com outras ferramentas, como
nc -vzw1 myindex.example.org 443
e tentando novamente quando a rede estava ativa.fonte
Eu estava enfrentando um problema semelhante ao tentar instalar a ferramenta awscli na instância ec2. Mudei o grupo de segurança para permitir o acesso de entrada e saída da porta 443 e isso resolveu o problema para mim.
fonte
Recebi este erro quando estava tentando criar um
virtualenv
comando withvirtualenv myVirtualEnv
. Acabei de adicionar umsudo
antes do comando; resolveu tudo.fonte
Solução:
1.
sudo apt remove python-pip
2.
pip3 install pip
(ou instale o pip por get-pip.py )Por que:
Este erro ocorreu no pip 8.0.1 que foi instalado pelo apt-get. E aconteceu apenas quando sua rede está instável.
Se você tem um pip instalado com o apt, ele esconde o pip que você instalou de outras maneiras, então você deve remover o apt primeiro.
Eu desconectei a rede e testei 8.0.1, 9.0.3, 10.x as 3 versões instaladas com pip3 ou get-pip.py, nenhum erro ocorreu. Então, eu acho que apenas a versão apt do pip 8.0.1 tem esse bug, as outras estão ok.
fonte
No meu caso, abri o Pycharm no modo sudo e estava executando o pip install nltk no terminal do pycharm, que exibia esse erro. executar com sudo pip install resolve o erro.
fonte
Eu também tive esse problema. Inicialmente, um proxy foi configurado e funcionou bem. Aí me conectei a uma rede onde não passa por proxy. Depois de desarmar o proxy pip novamente, funcionará.
fonte
Estranhamente, se eu remover o proxy do ambiente e adicioná-lo à linha de comando, ele funcionará para mim. Por exemplo, para se atualizar
pip
:Meu problema era ter proxy no ambiente. Parece que pip só honra aquele que está em discussão.
fonte
Esta é a solução de trabalho para este problema que encontrei.
fonte
Para mim, descobri que wlan0 estava desativado, o que resultou na impossibilidade de me conectar. Então, garantindo que wlan0 estava ativo, o pip / pip3 funcionou sem problemas.
fonte
Tentei a solução respondida acima:
Quando eu tentei
Eu recebi essa mensagem
Eu fiz o seguinte e funciona
fonte