從國內的 PyPI 映象(源)安裝 Python 包
不論是使用 pip,還是 Pipenv、Poetry 等工具,安裝 Python 包的時候會預設從官方的 PyPI 源下載檔案,速度比較慢。國內的一些公司和機構提供了 PyPI 映象源(mirror source),你可以設定讓這些工具從國內的映象源安裝,以便提高下載速度。
官方 PyPI 源的 URL 為 https:// pypi.org/simple (舊的 URL 為 https:// pypi.python.org/simple ),下面我們將以豆瓣提供的映象源為例(URL 為 https:// pypi.doubanio.com/simpl e/ ),介紹不同工具更改 PyPI 映象源的方法:
pip
臨時設定可以通過 -i 選項:
$ pip install -i https://pypi.doubanio.com/simple/ flask
全域性設定有不同的層級和檔案位置,以使用者全域性(per-user)為例,在 Linux & macOS 中,配置需要寫到 ~/.pip/pip.conf 檔案中;Windows 中,配置檔案位置為 %HOMEPATH%\pip\pip.ini,%HOMEPATH% 即你的使用者資料夾,一般為“\Users\<你的使用者名稱>”,具體值可以使用 echo %HOMEPATH% 命令檢視。
通常你需要手動建立對應的目錄和檔案,然後寫入下面的內容:
[global] index-url = https://pypi.doubanio.com/simple [install] trusted-host=pypi.doubanio.com
附註:按照 pip 文件,上面的配置檔案位置是舊(legacy)的配置方式,但是因為比較方便設定,這裡沿用了。新的建議是 Linux & macOS 放到 $HOME/.config/pip/pip.conf,Windows 則放到 %APPDATA%\pip\pip.ini。具體可以訪問pip 文件配置部分檢視。
Pipenv
類似 pip 的 -i (--index-url)選項,你可以使用 --pypi-mirror 臨時設定映象源地址:
$ pipenv install --pypi-mirror https://pypi.doubanio.com/simple flask
如果想對專案全域性(per-project)設定,可以修改 Pipfile 中 [[source]] 小節:
[[source]] url = "https://pypi.doubanio.com/simple" verify_ssl = true name = "douban"
另外一種方式是使用環境變數 PIPENV_PYPI_MIRROR 設定(Windows 系統使用 set 命令):
$ export PIPENV_PYPI_MIRROR=https://pypi.doubanio.com/simple
你可以通過把這個環境變數的設定語句寫入到終端的配置檔案裡實現“永久”設定,Linux & macOS 可參考這裡,Windows 可參考這裡。
Poetry / Flit
因為 Poetry,Flit 這些工具遵循 PEP 518 建立了一個 pyproject.toml 檔案來替代 setup.py、Pipfile 等配置檔案,所以我們可以在這個檔案裡更改 PyPI 源。
使用 Poetry 時,在 pyproject.toml 末尾新增下面的內容來設定自定義映象源:
[[tool.poetry.source]] name = "douban" url = "https://pypi.doubanio.com/simple/"
目前暫時沒有其他方式,未來或許會為 poetry add 命令新增一個相關的設定選項。
同樣的,Flit 大概要新增下面這些內容(未測試):
[[tool.flit.source]] name = "douban" url = "https://pypi.doubanio.com/simple/"
常用的國內 PyPI 映象列表
- 豆瓣 https:// pypi.doubanio.com/simpl e/
- 阿里雲 https:// mirrors.aliyun.com/pypi /simple/
- 清華大學 https:// pypi.tuna.tsinghua.edu.cn /simple/
順便提一下,使用映象源需要注意一個問題:包的版本可能不會及時更新,遇到這種情況可以通過臨時換回官方源解決。