控制安装过程的选项

在安装软件包时,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 AlreadyInstalledpip install --upgrade --upgrade-strategy=to-satisfy-only AlreadyInstalled 产生相同行为)的“默认”升级策略。

--force-reinstall

不会影响解析,但如果解析结果与当前安装的内容相同,则会卸载并重新安装,而不是保留当前版本。即使未设置 --upgrade,也会发生这种情况。

--ignore-installed

表现得好像当前安装的版本不存在 - 因此不关心 --upgrade,也不在(重新)安装之前卸载。

控制要考虑的内容

这些选项会影响解析器将作为安装候选者考虑的发行版文件的列表。因此,它们会影响解析器需要处理的数据,而不是影响 pip 对解析结果的操作。

预发布版

--pre

源代码与二进制文件

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