控制安裝程序的選項¶
在安裝套件時,pip 會選擇一個發行檔案,並將其安裝在使用者的環境中。在決定要安裝哪個檔案時,有許多選擇(仍在持續演化),這些選擇由各種選項控制。
注意
根據20.3 (2020) 版本的 pip 相依性解析器變更,本文檔的這一部份需要更新。
控制所安裝的內容¶
這些選項會直接影響解析器如何使用可用的發行檔案清單來決定要安裝哪一個檔案。因此,這些選項會修改解析演算法本身,而不是該演算法的輸入。
--upgrade
允許安裝較新版本的已安裝套件。從原則上來說,此選項實際上會影響「考量的內容」,因為它允許解析器查看已安裝套件的其他版本。如果沒有--upgrade
,解析器只會將已安裝的版本視為候選版本。
--upgrade-strategy
此選項會影響哪些套件可以安裝。如果指定了--upgrade
(但 to-satisfy-only
選項除外),此選項才會相關。基本行為是允許升級在 pip 指令列上指定的套件。此選項控制可以升級的其他套件
eager
- 所有套件都將升級到最新可能的版本。在此處應注意,pip 目前使用解析演算法甚至不知道命令列上指定的套件和識別為相依性關係的套件以外的套件。新解析器可能適用或不適用此情況。only-if-needed
- 僅當套件在 pip 指令或需求檔案中命名(即為直接需求)時,或者升級的父項需要較目前已安裝的相依性更新版本時,才會升級套件。to-satisfy-only
(未記錄且請避免使用) - 僅當目前已安裝的版本無法滿足需求(明確指定或相依性)時,才會升級套件(甚至直接需求)。這是實際上在未設定
--upgrade
時,「預設」的升級策略,亦即pip install AlreadyInstalled
和pip install --upgrade --upgrade-strategy=to-satisfy-only AlreadyInstalled
會產生相同的行為。
--force-reinstall
不會影響解析,但若解析結果和目前已安裝的一樣,會將其解除安裝再重新安裝,而不是維持目前的版本。即使未設定 --upgrade
也是如此。
--ignore-installed
視同目前已安裝的版本不存在 - 因此不在意 --upgrade
,也不會在 (重新) 安裝之前解除安裝。
控制考量的對象¶
這些選項會影響解析器會將其視為安裝候選者的發行檔清單。因此它們會影響解析器必須處理的資料,而不是影響 pip 處理解析結果的方式。
Pre-release
--pre
Source vs Binary
--no-binary
--only-binary
--prefer-binary
車輪標籤規格
--platform
--implementation
--abi
索引選項
--index-url
--extra-index-url
--no-index
--find-links
控制依賴資料¶
這些選項會控制解析器針對任何給定的套件會看到什麼依賴資料 (或是在使用 --python-version
時會看到解析器用來檢查依賴的環境資訊)。
--no-deps
--python-version
--ignore-requires-python
特殊情況¶
這些需要進一步研究。它們會影響安裝程序,但未必會影響解析或所安裝的內容。
--require-hashes
--constraint
--editable <LOCATION>