Как решить ReadTimeoutError: HTTPSConnectionPool (host = 'pypi.python.org', port = 443) с помощью pip?

93

Мне недавно нужно установить несколько пакетов

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

Я также пробовал писать sudoдо них, но все это привело к следующим ошибкам в красных линиях:

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
источник
2
Если на самом деле нет ошибки под названием «Ошибки красного экрана», не
указывайте
4
Я думаю, проблема с сетью, попробуйте ping pypi.python.orgпосмотреть, работает ли она. Это можно решить с помощью чего-то столь же простого, как перезапуск маршрутизатора, повторное подключение к Интернету или даже повторная попытка через некоторое время. пожалуйста, следуйте Как спросить, прежде чем размещать здесь.
Кришна Чайтанья Корнепати
Это также может произойти, если он должен пройти через прокси-сервер. Сделайте: pip install future --proxy = <ваш прокси-сайт>
user3885927
Решаю с остановкой прокси openconnect: | :))
Mojtaba Arvin

Ответы:

182

Yaayy! Я нашел ответ. Просто используйте параметр --default-timeout = 100 с файлом install. например

sudo pip install --default-timeout=100 future
Ateeb
источник
16
В качестве альтернативы я использовал, export PIP_DEFAULT_TIMEOUT=100поскольку у меня была pipкоманда в общем файле Docker, и это было временным требованием для меня. Но работает, спасибо!
Kerem
8
Спасибо, это спасает меня от медленного интернета. Я предполагаю, что 100 - это количество секунд, в течение которых пип будет ждать повторного подключения после потери соединения?
LittleZero
1
Могу ли я сделать настройку тайм-аута постоянным?
Timo
1
Не могу найти настройку с помощью pip helpили pip install help. Есть как бы то ни было socket timeout. Интересно, какое значение по умолчанию?
Timo
1
Не могу найти настройку с помощью pip helpили pip install help. Есть как бы то ни было socket timeout. Интересно, какое значение по умолчанию?
Timo
8

sudo pip install --default-timeout = 100 в будущем

или альтернативно

экспорт PIP_DEFAULT_TIMEOUT = 100 работал у меня на Mac OSX

Джагдиш
источник
0

Есть два способа решить эту проблему.

Первый способ:

sudo pip install --default-timeout = 100 в будущем

Второй: pip install --default-timeout = 100 future.

Примечание. Если вы не являетесь суперпользователем своего компьютера, команда sudo pip работать не будет. (Это случилось со мной.)

ARB
источник
2
Обратите внимание, что использовать sudo с pip - не лучшая идея. Вместо этого используйте флаг --user.
Встречайте Sinojia