2016-07-29 44 views
3

sudo pip3 install scikit-learn(任何模塊實際上只是使用最近一次嘗試)PIP3讀超時錯誤

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 

每一個命令,並在相同的錯誤上述結果的任意組合:讀超時。錯誤總是發生在同一點(scikit-learn發生在24%)。我使用的是最新版本的pip(8.1.2),我使用的是Ubuntu 16.04。確切的錯誤是:

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. 

回答

7

設置默認套接字超時到一個更高的值(例如千秒)應該解決您的問題:

pip3 install -U --timeout 1000 scikit-learn 

合適的超時值,當然要看你的連接速度和質量。請注意,套接字超時AFAIK是引發錯誤之前套接字級數據流被中斷的最長時間,而不是下載軟件包所需的總時間。