1. 程式人生 > >解決 pipenv 安裝第三方庫時卡住:更換國內源

解決 pipenv 安裝第三方庫時卡住:更換國內源

解決 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. 國內源的選擇

阿里雲: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