pip3 read time out error
Asked Answered
H

5

8

sudo pip3 install scikit-learn (any module really just using most recent attempt)

sudo pip3 install -U scikit-learn

sudo -H pip3 install -U scikit-learn

sudo -H pip3 --default-timeout=200 install -U scikit-learn

sudo python3 -m pip install scikit-learn

every command and any combination of the above results in the same error: Read timed out. The error always occurs at the same point (scikit-learn happens at 24%). I am using the latest version of pip(8.1.2) and I am on ubuntu mate 16.04. The exact error is:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/_vendor/requests/packages/urllib3/response.py", line 228, in _error_catcher
    yield
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/_vendor/requests/packages/urllib3/response.py", line 310, in read
    data = self._fp.read(amt)
   File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/_vendor/cachecontrol/filewrapper.py", line 49, in read
     data = self.__fp.read(amt)
  File "/usr/lib/python3.5/http/client.py", line 448, in read
    n = self.readinto(b)
  File "/usr/lib/python3.5/http/client.py", line 488, in readinto
    n = self.fp.readinto(b)
  File "/usr/lib/python3.5/socket.py", line 575, in readinto
    return self._sock.recv_into(b)
  File "/usr/lib/python3.5/ssl.py", line 929, in recv_into
    return self.read(nbytes, buffer)
  File "/usr/lib/python3.5/ssl.py", line 791, in read
    return self._sslobj.read(len, buffer)
  File "/usr/lib/python3.5/ssl.py", line 575, in read
    v = self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/commands/install.py", line 310, in run
    wb.build(autobuilding=True)
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/wheel.py", line 750, in build
    self.requirement_set.prepare_files(self.finder)
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/req/req_set.py", line 370, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/req/req_set.py", line 587, in _prepare_file
    session=self.session, hashes=hashes)
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/download.py", line 810, in unpack_url
    hashes=hashes
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/download.py", line 649, in unpack_http_url
hashes)
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/download.py", line 871, in _download_http_url
_download_url(resp, link, content_file, hashes)
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/download.py", line 595, in _download_url
    hashes.check_against_chunks(downloaded_chunks)
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/utils/hashes.py", line 46, in check_against_chunks
    for chunk in chunks:
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/download.py", line 563, in written_chunks
    for chunk in chunks:
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/utils/ui.py", line 139, in iter
    for x in it:
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/download.py", line 552, in resp_read
decode_content=False):
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/_vendor/requests/packages/urllib3/response.py", line 353, in stream
    data = self.read(amt=amt, decode_content=decode_content)
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/_vendor/requests/packages/urllib3/response.py", line 320, in read
    flush_decoder = True
  File "/usr/lib/python3.5/contextlib.py", line 77, in __exit__
    self.gen.throw(type, value, traceback)
  File "/usr/local/lib/python3.5/dist-packages/pip-8.1.2-py3.5.egg/pip/_vendor/requests/packages/urllib3/response.py", line 233, in _error_catcher
    raise ReadTimeoutError(self._pool, None, 'Read timed out.')
pip._vendor.requests.packages.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org', port=443): Read timed out.
Hammerless answered 29/7, 2016 at 15:47 Comment(1)
Does this answer your question? Pip Install Timeout IssueInterfile
B
19

Setting the default socket timeout to a higher value (e.g. 1000 seconds) should fix your problem:

pip3 install -U --timeout 1000 scikit-learn

The suitable timeout value, of course, depends on your connection speed and quality. Note that the socket timeout, AFAIK, is the maximum time the socket-level data flow is interrupted before an error is raised, not the total time needed to download packages.

Bevan answered 23/8, 2016 at 17:40 Comment(0)
L
3

Set timeout to a high value. Also it's recommended to run the below command always:

python3 -m pip install --user --timeout 10000 scikit-learn

You maybe asking why should I enter python3 -m as extra and type a few more strings. It's basically to avoid conflicts when you working with multiple virtual environments.

Python core developer Brett Cannon explains why you should install packages like this in his article A quick and dirty guide on how to install python packages.

Lite answered 12/8, 2020 at 14:33 Comment(0)
B
3

Setting timeout to a high value is a good solution. In addition, I think that pip install your_package_name from a new useful trusted-host works better. For example:

pip install scikit-learn -i https://www.lfd.uci.edu/~gohlke/pythonlibs/

If you are in China, please use https://pypi.tuna.tsinghua.edu.cn/simple or http://mirrors.aliyun.com/pypi/simple.

If you want the setting above to be valid permanently:

pip config set global.index-url https://www.lfd.uci.edu/~gohlke/pythonlibs/

or you can edit ~/.pip/pip.conf:

[global]
index-url = https://www.lfd.uci.edu/~gohlke/pythonlibs/
[install]
trusted-host = other_useful_urls
Burnside answered 24/7, 2022 at 15:2 Comment(0)
S
1

Make sure you are using IPV4 and not IPV6.

Sociality answered 5/3, 2021 at 21:56 Comment(0)
G
0

Sometimes it's nececessary to make some hosts trusted as well: bacause of proxies in some comapnies or service providers.

! pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --timeout 1000 scikit-learn
Gravity answered 17/2, 2021 at 20:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.