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.
- 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.
- 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.
- 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
- 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
- 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/
man… you saved my life!
Tai xiexie ni