組態檔案處理¶
pip._internal.configuration
模組負責處理 pip 使用的組態檔案(例如從檔案載入和儲存值至檔案)。此模組的功能主要是透過模組的 Configuration
類別公開和協調。
注意
此文件區段目前撰寫中。pip 開發人員歡迎你協助完成此文件。如果你有興趣協助,請在 追蹤問題 中讓我們知道。
概述¶
pip 將組態檔案儲存在標準的操作系統合適位置,這些位置是由 appdirs
決定的。這些檔案採用 INI 格式,並使用 RawConfigParser
處理。
pip 在兩個操作中使用組態檔案
處理命令列選項期間。
從所有組態來源讀取
作為
pip config
命令的一部分。從所有組態來源讀取
操作單一組態檔案
這兩個操作都使用 Configuration
物件所提供的功能,此物件封裝了處理組態檔案的所有邏輯,並提供相同的 API。
此區段的其餘部分記錄了 Configuration
類別,並說明潛在的未來重構概念。
Configuration
類別¶
Configuration
從當地環境的來源載入組態值:組態檔案和環境變數的組合。
它可以在「模式」下使用,從當地環境讀取所有值,以及操作單一組態檔案。它透過 load_only
屬性區分這兩種模式,此屬性可以是 None 或表示要操作的組態檔案的 類型。
屬性 isolated
決定在載入組態時使用哪些來源。如果 isolated
為 True
,就不會使用特定使用者的組態檔和環境變數。
從本機環境讀取¶
Configuration
可用於從本機環境中讀取所有組態來源,並存取這些值,依照 組態優先順序 區段中所述的優先邏輯。
對於此使用案例,Configuration.load_only
屬性會是 None
,而使用的函式方法會是
- 類別 Configuration¶
- 載入()¶
處理所有與環境的互動,將所有組態資料載入至記憶體中的物件。
- 項目()¶
從載入至記憶體中的資訊提供關鍵字 - 值配對(像
dict.items()
),處理所有覆寫順序邏輯。
在撰寫本文的同時,使用 Configuration
的程式碼庫部分如下:ConfigOptionParser
,用於將組態處理透明地包含在命令列處理邏輯一部分,以及 pip config get
,用於在未透過 CLI 指定 種類 時印出整個組態。
針對單一設定檔進行操作¶
設定檔
可用於操控單一設定檔,例如加入、變更或移除特定金鑰值配對。
針對這個使用案例,僅載入
屬性將是非空值,且會代表要操作的設定檔 類型。除了前一章中討論的方法外,使用的方法會是
類型¶
這是提供值的列舉,用以代表設定檔的「來源」。這包括環境變數,以及各種類型的設定檔(全域、特定網站、特定使用者、經由 PIP_CONFIG_FILE
指定)。
後續重構構想¶
- 將
設定檔
類別按使用案例分拆為 2 個較小的類別 指令碼
使用案例(唯讀)--設定檔讀取程式
pip config
用例(讀取/寫入)--ConfigurationModifier
(繼承自ConfigurationReader
)
- 將
加載後迅速補齊
Configuration._dictionary
。