How To Fix The Error Socket.timeout: The Read Operation Timed Out When Run Pip Install Command

When I run the command pip install scipy in my virtual python environment to install the python scipy library, I meet the socket.timeout: The read operation timed out error. This article will tell you how to fix it.

1. How To Fix The Error Socket.timeout: The Read Operation Timed Out When Run Pip Install Command.

  1. Below is the detailed error message.
    (MyPythonEnv) C:\Users\zhaosong>pip install scipy
    Collecting scipy
      Downloading scipy-1.7.1-cp38-cp38-win_amd64.whl (33.7 MB)
         |████                            | 4.4 MB 13 kB/s eta 0:37:21ERROR: Exception:
    Traceback (most recent call last):
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_vendor\urllib3\response.py", line 438, in _error_catcher
        yield
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_vendor\urllib3\response.py", line 519, in read
        data = self._fp.read(amt) if not fp_closed else b""
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_vendor\cachecontrol\filewrapper.py", line 62, in read
        data = self.__fp.read(amt)
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\http\client.py", line 458, in read
        n = self.readinto(b)
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\http\client.py", line 502, in readinto
        n = self.fp.readinto(b)
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\socket.py", line 669, in readinto
        return self._sock.recv_into(b)
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\ssl.py", line 1241, in recv_into
        return self.read(nbytes, buffer)
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\ssl.py", line 1099, in read
        return 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 "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\cli\base_command.py", line 173, in _main
        status = self.run(options, args)
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\cli\req_command.py", line 203, in wrapper
        return func(self, options, args)
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\commands\install.py", line 315, in run
        requirement_set = resolver.resolve(
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\resolution\resolvelib\resolver.py", line 94, in resolve
        result = self._result = resolver.resolve(
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 472, in resolve
        state = resolution.resolve(requirements, max_rounds=max_rounds)
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 341, in resolve
        self._add_to_criteria(self.state.criteria, r, parent=None)
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 172, in _add_to_criteria
        if not criterion.candidates:
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_vendor\resolvelib\structs.py", line 151, in __bool__
        return bool(self._sequence)
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 140, in __bool__
        return any(self)
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 128, in <genexpr>
        return (c for c in iterator if id(c) not in self._incompatible_ids)
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 32, in _iter_built
        candidate = func()
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\resolution\resolvelib\factory.py", line 204, in _make_candidate_from_link
        self._link_candidate_cache[link] = LinkCandidate(
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 295, in __init__
        super().__init__(
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 156, in __init__
        self.dist = self._prepare()
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 227, in _prepare
        dist = self._prepare_distribution()
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 305, in _prepare_distribution
        return self._factory.preparer.prepare_linked_requirement(
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\operations\prepare.py", line 508, in prepare_linked_requirement
        return self._prepare_linked_requirement(req, parallel_builds)
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\operations\prepare.py", line 550, in _prepare_linked_requirement
        local_file = unpack_url(
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\operations\prepare.py", line 239, in unpack_url
        file = get_http_url(
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\operations\prepare.py", line 102, in get_http_url
        from_path, content_type = download(link, temp_dir.path)
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\network\download.py", line 145, in __call__
        for chunk in chunks:
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\cli\progress_bars.py", line 144, in iter
        for x in it:
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_internal\network\utils.py", line 63, in response_chunks
        for chunk in response.raw.stream(
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_vendor\urllib3\response.py", line 576, in stream
        data = self.read(amt=amt, decode_content=decode_content)
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_vendor\urllib3\response.py", line 541, in read
        raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\contextlib.py", line 131, in __exit__
        self.gen.throw(type, value, traceback)
      File "C:\Users\zhaosong\anaconda3\envs\MyPythonEnv\lib\site-packages\pip\_vendor\urllib3\response.py", line 443, in _error_catcher
        raise ReadTimeoutError(self._pool, None, "Read timed out.")
    pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
  2. Finally, I find the method to fix it, just need to specify a PyPI repository mirror near to me, and then use the mirror with the -i or –index-url parameter of the pip install command like below.
  3. The -i or –index-url parameter’s value points out the Python Package Index base URL, the default value is https://pypi.python.org/simple if you do not provide it.
    pip install scipy -i https://mirrors.sustech.edu.cn/pypi/simple
  4. Now the pip installation speed is very fast and successful.
    (MyPythonEnv) C:\Users\zhaosong>pip install scipy -i https://mirrors.sustech.edu.cn/pypi/simple
    Looking in indexes: https://mirrors.sustech.edu.cn/pypi/simple
    Collecting scipy
      Downloading https://mirrors.sustech.edu.cn/pypi/packages/90/39/b9452a3879b0baea4041d6b344bfad37aacfaadaafe945b47bb475ab8c7a/scipy-1.7.1-cp38-cp38-win_amd64.whl (33.7 MB)
         |████████████████████████████████| 33.7 MB 3.3 MB/s
    Requirement already satisfied: numpy<1.23.0,>=1.16.5 in c:\users\zhaosong\anaconda3\envs\mypythonenv\lib\site-packages (from scipy) (1.20.3)
    Installing collected packages: scipy
    Successfully installed scipy-1.7.1
  5. I found some PyPI repository mirror URLs from the internet, and you can google others or create your own. Note: the new version of Ubuntu requires HTTPS source。
    https://pypi.tuna.tsinghua.edu.cn/simple
    
    http://mirrors.aliyun.com/pypi/simple/
    
    https://pypi.mirrors.ustc.edu.cn/simple/
    
    http://pypi.hustunique.com/
    
    http://pypi.sdutlinux.org/
    
    http://pypi.douban.com/simple/

1 thought on “How To Fix The Error Socket.timeout: The Read Operation Timed Out When Run Pip Install Command”

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.