pip 因 ReadTimeoutError 而失败

pip 因 ReadTimeoutError 而失败

我正在尝试jupyter notebook使用进行安装pip,因此我首先安装了pip3

sudo apt-get install --no-install-recommends python3-pip

然后我跑了:

sudo pip3 install jupyter

下载包时notebook会等待几秒钟,然后失败并出现大量错误,错误结尾如下所示:

File "/usr/lib/python3.5/contextlib.py", line 77, in __exit__
self.gen.throw(type, value, traceback)
File "/usr/share/python-wheels/urllib3-1.13.1-py2.py3-none-any.whl/urllib3/response.py", line 231, in _error_catcher
raise ReadTimeoutError(self._pool, None, 'Read timed out.')
requests.packages.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org', port=443): Read timed out.

我的 Ubuntu 版本是:16.04(Xenial),并且我的互联网连接速度相当慢。

答案1

notebook大小约为6.9 MB,如果您使用低速互联网连接,则很有可能由于超时而导致安装失败。

我通过更新解决了这个问题pip3,但是我也会建议另一种方法,如果您无法升级pip3,请使用这个,这也可以完成工作。

您可以使用--default-timeoutswitch 来解决这个问题,例如:

sudo pip --default-timeout=1000 install jupyter

它应该忽略超时并且安装将成功完成。


对我有用的另一件事是更新pip3,Ubuntu 存储库中的那个已经很旧了:8.1.1撰写本指南时的最新版本是:9.0.1。我建议使用这种方法只是因为您不必pip3--default-timeout每次尝试安装新软件包时都运行,当然您也可以使用别名 ;) 只要适合您就行。

顺便说一句,我不喜欢以 root 身份安装 python 包,因此我建议使用--userswitch 在本地自行安装,但如果您想让这个包范围的系统可用,那么请使用sudo

pip3 install --upgrade pip --user

如果您遇到同样的错误,现在您知道如何修复它了,只需使用--default-timeout开关升级即可pip

现在它应该可以正常工作了:

pip3 install jupyter --user

答案2

我已经按照以下设置在我的服务器上修复了这个问题,因为唯一的超时对我没有帮助:

Ubuntu 机器上的 ~/.pip/pip.conf 内容如下

[全局] 受信任主机 = pypi.org files.pythonhosted.org

[安装] 超时 = 100

似乎其他“更受信任”的主机对某些网络提供商来说很好,现在运行良好。更多信息请参阅文档https://pip.pypa.io/en/stable/topics/configuration/#pip-config-file

相关内容