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-mensurepip

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

python-mensurepip--upgrade

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

--root<dir>

安裝pip 到給定的根目錄 (root directory) 的相對路徑,而不是目前虛擬環境(若存在)的根目錄,或目前 Python 安裝版所預設的根目錄。

--user

安裝pip 到使用者端的套件目錄,而不是全域安裝到目前的 Python 安裝版(此選項不允許在一啟動的虛擬環境中使用)。

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

--altinstall

若要求一個替代安裝版,則不會安裝pipX 腳本。

--default-pip

若要求安裝「預設 pip」,則會安裝pip 腳本,及 2 個常規腳本。

提供兩種指令選項將會導致例外 (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 中被移除)。