インストールプロセスを制御するオプション

パッケージをインストールする際、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

ソース vs バイナリ

--no-binary

--only-binary

--prefer-binary

Wheel タグの指定

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