安装python模块时出现错误“ socket.timeout:读取操作超时”

Oma*_*mar 5 python pip spacy

我正在尝试为spaCy安装大型英语模块“ en_core_web_lg”(用于自然语言处理的库)

由于某些原因,成功安装了中小型模块(起初几乎没有错误),但是大型模块始终会崩溃。

我使用了两种不同的方法:

1)

$ python -m spacy download en_core_web_lg
Run Code Online (Sandbox Code Playgroud)

2)

$ pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_lg-2.0.0/en_core_web_lg-2.0.0.tar.gz

但是在两种情况下,我总是会遇到以下两个异常:

(venv) omar@omar-device:~/virtualenvironment/my_new_app/bin/venv/bin$ pip3 install https://github.com/explosion/spacy-models/releases/download/en_core_web_lg-2.0.0/en_core_web_lg-2.0.0.tar.gz
Collecting https://github.com/explosion/spacy-models/releases/download/en_core_web_lg-2.0.0/en_core_web_lg-2.0.0.tar.gz
  Downloading https://github.com/explosion/spacy-models/releases/download/en_core_web_lg-2.0.0/en_core_web_lg-2.0.0.tar.gz (852.3MB)
    38% |?????????????                   | 325.7MB 114kB/s eta 1:16:26Exception:
Traceback (most recent call last):
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_vendor/urllib3/response.py", line 331, in _error_catcher
    yield
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_vendor/urllib3/response.py", line 413, in read
    data = self._fp.read(amt)
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_vendor/cachecontrol/filewrapper.py", line 62, 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 "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_internal/basecommand.py", line 141, in main
    status = self.run(options, args)
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_internal/commands/install.py", line 299, in run
    resolver.resolve(requirement_set)
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_internal/resolve.py", line 102, in resolve
    self._resolve_one(requirement_set, req)
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_internal/resolve.py", line 256, in _resolve_one
    abstract_dist = self._get_abstract_dist_for(req_to_install)
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_internal/resolve.py", line 209, in _get_abstract_dist_for
    self.require_hashes
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_internal/operations/prepare.py", line 283, in prepare_linked_requirement
    progress_bar=self.progress_bar
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_internal/download.py", line 836, in unpack_url
    progress_bar=progress_bar
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_internal/download.py", line 673, in unpack_http_url
    progress_bar)
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_internal/download.py", line 897, in _download_http_url
    _download_url(resp, link, content_file, hashes, progress_bar)
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_internal/download.py", line 619, in _download_url
    consume(downloaded_chunks)
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_internal/utils/misc.py", line 844, in consume
    deque(iterator, maxlen=0)
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_internal/download.py", line 585, in written_chunks
    for chunk in chunks:
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_internal/utils/ui.py", line 159, in iter
    for x in it:
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_internal/download.py", line 574, in resp_read
    decode_content=False):
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_vendor/urllib3/response.py", line 465, in stream
    data = self.read(amt=amt, decode_content=decode_content)
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_vendor/urllib3/response.py", line 430, in read
    raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
  File "/usr/lib/python3.5/contextlib.py", line 77, in __exit__
    self.gen.throw(type, value, traceback)
  File "/home/omar/virtualenvironment/my_new_app/bin/venv/lib/python3.5/site-packages/pip/_vendor/urllib3/response.py", line 336, in _error_catcher
    raise ReadTimeoutError(self._pool, None, 'Read timed out.')
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='github-production-release-asset-2e65be.s3.amazonaws.com', port=443): Read timed out.
Run Code Online (Sandbox Code Playgroud)

我一开始尝试重新安装Python3,但是崩溃了我的台式机和终端机,不得不使用控制台:D(使用此答案https://askubuntu.com/questions/384033/removed-python-3-and-now- ubuntu软件中心终端和其他应用程序)。

eke*_*ser 5

尝试增加 pip 超时: pip install --default-timeout=900 [pkg_name]

  • @Bruno:这似乎是我的答案。该问题报告安装 python 模块时发生超时异常。这个答案提供了一种增加安装模块(或包)时超时的方法。你为什么不认为这是一个答案? (4认同)

Oma*_*mar 3

我在系统环境和虚拟环境下都尝试了很多次,一次就达到了100%下载(~850MB),然后又出现了这个错误!所以,问题显然不在于下载步骤,而在于下载后的直接安装。

所以我考虑分成两个步骤:首先使用以下命令下载模块:

$ wget "https://github.com/explosion/spacy-models/releases/download/en_core_web_lg-2.0.0/en_core_web_lg-2.0.0.tar.gz"
Run Code Online (Sandbox Code Playgroud)

然后使用安装它

$ pip install en_core_web_lg-2.0.0.tar.gz
Run Code Online (Sandbox Code Playgroud)

并且工作顺利。

确实,我解决了最初的问题,但我仍然不知道是什么导致了它的发生(如果你知道,请写一个答案)。