Como resolver ReadTimeoutError: HTTPSConnectionPool (host = 'pypi.python.org', port = 443) com pip?

93

Recentemente, preciso instalar alguns pacotes

pip install future
pip install scikit-learn
pip install numpy
pip install scipy

Eu também tentei escrever sudoantes deles, mas tudo resultou nos seguintes erros em linhas vermelhas:

Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 290, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1198, in prepare_files
    do_download,
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1376, in unpack_url
    self.session,
  File "/usr/lib/python2.7/dist-packages/pip/download.py", line 572, in unpack_http_url
    download_hash = _download_url(resp, link, temp_location)
  File "/usr/lib/python2.7/dist-packages/pip/download.py", line 433, in _download_url
    for chunk in resp_read(4096):
  File "/usr/lib/python2.7/dist-packages/pip/download.py", line 421, in resp_read
    chunk_size, decode_content=False):
  File "/usr/lib/python2.7/dist-packages/urllib3/response.py", line 256, in stream
    data = self.read(amt=amt, decode_content=decode_content)
  File "/usr/lib/python2.7/dist-packages/urllib3/response.py", line 201, in read
    raise ReadTimeoutError(self._pool, None, 'Read timed out.')
ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org', port=443): Read timed out.

Storing debug log for failure in /root/.pip/pip.log'
Ateeb
fonte
2
A menos que haja realmente um erro chamado Erros de tela vermelha, não coloque isso como título
abccd
4
Acho que é um problema de rede, tente ping pypi.python.orgver se funciona. Isso pode ser resolvido com algo tão simples como reiniciar o roteador ou reconectar à Internet ou até mesmo tentar novamente depois de algum tempo. por favor, siga Como perguntar antes de postar aqui.
Krishna Chaitanya Kornepati,
Isso também pode acontecer se for necessário contornar o proxy. Faça: pip install future --proxy = <seu site de proxy>
user3885927
Eu resolvo isso interrompendo o proxy openconnect: | :))
Mojtaba Arvin

Respostas:

182

Yaayy! Eu encontrei a resposta. Basta usar o parâmetro --default-timeout = 100 com a instalação. por exemplo

sudo pip install --default-timeout=100 future
Ateeb
fonte
16
Como alternativa, usei export PIP_DEFAULT_TIMEOUT=100desde que tinha o pipcomando em um Dockerfile compartilhado e era um requisito temporário para mim. Mas funciona, obrigado!
Kerem
8
Obrigado, isso me salva na condição de internet lenta. Eu acho que 100 é o número de segundos que o pip vai esperar pela reconexão depois de perder a conexão.
LittleZero
1
Posso definir o tempo limite de configuração permanente?
Timo
1
Não consigo encontrar a configuração com pip helpou pip install help. Não é o howerver socket timeout. Eu me pergunto qual é o valor padrão?
Timo
1
Não consigo encontrar a configuração com pip helpou pip install help. Não é o howerver socket timeout. Eu me pergunto qual é o valor padrão?
Timo
8

sudo pip install --default-timeout = 100 future

ou alternativamente

export PIP_DEFAULT_TIMEOUT = 100 funcionou para mim no mac osx

Jagdish
fonte
0

São duas maneiras de lidar com esse problema.

Primeiro método:

sudo pip install --default-timeout = 100 future

Segundo: pip install --default-timeout = 100 future.

Nota: Se você não for superusuário de sua máquina, o comando sudo pip não funcionará. (Aconteceu comigo.)

ARB
fonte
2
Observe que não é uma boa ideia usar 'sudo' com pip. Em vez disso, use a sinalização '--user'.
Conheça Sinojia