解決 pipenv 安裝第三方庫時卡住:更換國內源
阿新 • • 發佈:2018-11-13
解決 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