ensurepip --- pip 安裝器的初始建置 (bootstrapping)

在 3.4 版被加入.

原始碼:Lib/ensurepip


ensurepip 套件 (package) 為既有的 Python 安裝或虛擬環境提供 pip 安裝器初始建置 (bootstrapping) 的支援。這個初始建置的方式應證了事實 —— pip 是有其獨立發布週期的專案,且其最新可用穩定的版本,會與 CPython 直譯器 (interpreter) 之維護和功能發布綁定。

大多數情況下,Python 的終端使用者不需要直接調用此模組(因為 pip 預設應為初始建置),但若安裝 Python 時 pip 被省略(或建立一虛擬環境時),又或是 pip 被明確解除安裝時,則此模組的初始建置仍有可能用上。

備註

此模組不會通過網路存取。所有需要用來初始建置 pip 的元件都已包含在套件之內。

也參考

安裝 Python 模組

對於終端使用者安裝 Python 套件的指引

PEP 453: 在 Python 安裝中的 pip 明確初始建置

此模組的最初設計理念與規範。

適用: not Android, not iOS, not WASI.

此模組在行動平台WebAssembly 平台上不支援。

命令列介面

使用直譯器 (interpreter) 的 -m 來調用命令列介面

最簡單可行的調用:

python -m ensurepip

pip 未安裝,此調用會將其安裝;否則甚麼也不做。可透過傳入 --upgrade 參數來確保 pip 的安裝版本至少為當前 ensurepip 中最新可用的版本:

python -m ensurepip --upgrade

預設上,pip 會被安裝至當前虛擬環境(若已啟動虛擬環境)或系統端的套件(若沒有啟動的虛擬環境)。安裝位置可透過兩個額外的命令列選項來控制:

--root <dir>

Installs pip relative to the given root directory rather than the root of the currently active virtual environment (if any) or the default root for the current Python installation.

--user

Installs pip into the user site packages directory rather than globally for the current Python installation (this option is not permitted inside an active virtual environment).

預設會安裝 pipXpipX.Y 腳本(X.Y 代表用來調用 ensurepip 的 Python 之版本)。安裝的腳本可透過兩個額外的命令列選項來控制:

--altinstall

If an alternate installation is requested, the pipX script will not be installed.

--default-pip

If a "default pip" installation is requested, the pip script will be installed in addition to the two regular scripts.

提供兩種指令選項將會導致例外 (exception) 。

模組 API

ensurepip 開放了兩個用於編寫程式的函式:

ensurepip.version()

回傳一個字串,用以標明初始建置時,安裝的 pip 的可行版本號。

ensurepip.bootstrap(root=None, upgrade=False, user=False, altinstall=False, default_pip=False, verbosity=0)

在當前或指定的環境之中建立 pip

root 指定一個替代的根目錄,作為安裝的相對路徑。若 rootNone,則安裝使用當前環境的預設安裝位置。

upgrade 指出是否要將一個既有的較早版本的 pip 升級至可用的新版。

user 指出是否要使用使用者的安裝方案而不是全域安裝。

預設會安裝 pipXpipX.Y 腳本(X.Y 代表 Python 的當前版本)。

如果啟用了 altinstall,則不會安裝 pipX

如果啟用了 default_pip,則會安裝 pip,以及 2 個常規腳本。

同時啟用 altinstalldefault_pip,將會觸發 ValueError

verbosity 用來控制初始建置操作內,對於 sys.stdout 的輸出等級。

引發一個附帶引數 root稽核事件 ensurepip.bootstrap

備註

初始建置的過程對於 sys.pathos.environ 均有副作用。改為在一子行程 (subprocess) 調用命令列介面可避免這些副作用。

備註

初始建置的過程也許會安裝 pip 所需要的額外的模組,但其他軟體不應該假設這些相依 (dependency) 總是預設存在(因為這些相依很可能會在未來版本的 pip 中被移除)。