转载来源:解决 pipenv 安装第三方库时卡住:更换国内源
解决 pipenv
安装第三方库时卡住的问题:更换国内源
0. 参考资料
- https://stackoverflow.com/questions/50719957/how-to-change-the-source-for-the-pipfile-for-better-usage-of-pipenv
- https://github.com/pypa/pipenv/blob/master/docs/advanced.rst
- https://blog.csdn.net/chenghuikai/article/details/55258957
- https://blog.csdn.net/jaket5219999/article/details/80815847
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. 国内源的选择
阿里云:http://mirrors.aliyun.com/pypi/simple/
豆瓣:http://pypi.douban.com/simple/
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学:https://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
回车查看修改后的
Pipfile
:cat 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/16 — 00:00:07