Jak rozwiązać ReadTimeoutError: HTTPSConnectionPool (host = 'pypi.python.org', port = 443) za pomocą pip?

91

Ostatnio muszę zainstalować kilka pakietów

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

Próbowałem też pisać sudoprzed nimi, ale wszystko wyszło z następującymi błędami w czerwonych liniach:

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
źródło
2
O ile w rzeczywistości nie występuje błąd o nazwie Błędy czerwonego ekranu, nie umieszczaj tego jako tytułu
abccd,
4
Myślę, że to problem z siecią, spróbuj ping pypi.python.orgsprawdzić, czy działa. Można go rozwiązać za pomocą czegoś tak prostego, jak ponowne uruchomienie routera lub ponowne połączenie z Internetem, a nawet po pewnym czasie ponowna próba. postępuj zgodnie z Jak zapytać przed wysłaniem tutaj.
Krishna Chaitanya Kornepati
Może się to również zdarzyć, jeśli będzie musiał omijać proxy. Do: pip install future --proxy = <Twoja witryna proxy>
user3885927
Rozwiązuję to zatrzymując proxy openconnect: | :))
Mojtaba Arvin

Odpowiedzi:

174

Yaayy! Znalazłem odpowiedź. Po prostu użyj parametru --default-timeout = 100 podczas instalacji. na przykład

sudo pip install --default-timeout=100 future
Ateeb
źródło
16
Alternatywnie użyłem, export PIP_DEFAULT_TIMEOUT=100ponieważ miałem pippolecenie w udostępnionym pliku Dockerfile i było to dla mnie tymczasowe wymaganie. Ale działa, dzięki!
Kerem
8
Dzięki, to ratuje mnie w stanie wolnego internetu. Domyślam się, że 100 to liczba sekund, przez które pip będzie czekał na ponowne połączenie po utracie połączenia?
LittleZero
1
Czy mogę ustawić limit czasu na stałe?
Timo
1
Nie mogę znaleźć ustawienia za pomocą pip helplub pip install help. Jest howerver socket timeout. Zastanawiam się, jaka jest wartość domyślna?
Timo
1
Nie mogę znaleźć ustawienia za pomocą pip helplub pip install help. Jest howerver socket timeout. Zastanawiam się, jaka jest wartość domyślna?
Timo
8

sudo pip install --default-timeout = 100 future

lub alternatywnie

eksport PIP_DEFAULT_TIMEOUT = 100 pracowało dla mnie na Mac OSX

Jagdish
źródło
0

Są dwa sposoby rozwiązania tego problemu.

Pierwsza metoda:

sudo pip install --default-timeout = 100 future

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

Uwaga: jeśli nie jesteś superużytkownikiem swojego komputera, polecenie sudo pip nie będzie działać. (Stało się to ze mną.)

ARB
źródło
1
Zauważ, że używanie „sudo” z pip nie jest dobrym pomysłem. Zamiast tego użyj flagi „--user”.
Spotkaj się z Sinojia