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

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


  • 解决 pipenv 安装第三方库时卡住的问题:更换国内源
    • 0. 参考资料
    • 1. 问题描述
    • 2. 国内源的选择
    • 3. 更换清华源
    • 4. 完成


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 回车

  • 查看修改后的 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

你可能感兴趣的:(腾蛇起陆)