解决 pipenv 安装第三方库时卡住的问题:更换国内源

1,453 阅读1分钟

解决 pipenv 安装第三方库时卡住的问题:更换国内源


0. 参考资料


1. 问题描述

其实准确来讲卡住的步骤不是在安装第三方库,而是在安装完成之后的锁定依赖的步骤。 会出现类似下面的提示:

Locking [dev-packages] dependencies...
Locking [packages] dependencies...

最后报超时的异常:

pipenv.patched.notpip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.

原因在于 Pipfile 文件中指定使用官方源锁定依赖,导致速度过慢,解决方案自然是更换国内源。


2. 国内源的选择

阿里云:mirrors.aliyun.com/pypi/simple… 豆瓣:pypi.douban.com/simple/ 清华大学:pypi.tuna.tsinghua.edu.cn/simple/ 中国科学技术大学:pypi.mirrors.ustc.edu.cn/simple/

本人只使用过豆瓣源和清华源,其中豆瓣源不好用,有些库找不到,推荐清华源,大家也可以自行尝试。 下面修改 Pipfile 文件默认源为清华源。


3. 更换清华源

注:以下过程在 Ubuntu 系统中进行,其他系统类似。

  • 切换目录到项目文件根目录
  • 查看 Pipfile 的内容: cat Pipfile
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
flask = "*"
requests = "*"
wtforms = "*"
flask-sqlalchemy = "*"
cymysql = "*"
flask-login = "*"

[dev-packages]

[requires]
python_version = "3.7"

  我们要修改的就是 [[source]] 下的 url

  • 打开 Pipfile 编辑: vim Pifile

  • 把第二行的 url 换成清华源(其实还可以把 name 也改动一下,我偷懒就不改了):

url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
  • 保存退出::x 回车

  • 查看修改后的 Pipfilecat Pipfile

[[source]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
verify_ssl = true
name = "pypi"

[packages]
flask = "*"
requests = "*"
wtforms = "*"
flask-sqlalchemy = "*"
cymysql = "*"
flask-login = "*"

[dev-packages]

[requires]
python_version = "3.7"


4. 完成

再次尝试 pipenv install 包名 ,这次锁定依赖的速度就快多了,最后一步只花了 7 秒。

Adding flask-login to Pipfile's [packages]...
Pipfile.lock (872fed) out of date, updating to (46e686)...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Updated Pipfile.lock (46e686)!
Installing dependencies from Pipfile.lock (46e686)...
▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 16/1600:00:07