pip install

使用方法

python -m pip install [options] <requirement specifier> [package-index-options] ...
python -m pip install [options] -r <requirements file> [package-index-options] ...
python -m pip install [options] [-e] <vcs project url> ...
python -m pip install [options] [-e] <local project path> ...
python -m pip install [options] <archive url/path> ...
py -m pip install [options] <requirement specifier> [package-index-options] ...
py -m pip install [options] -r <requirements file> [package-index-options] ...
py -m pip install [options] [-e] <vcs project url> ...
py -m pip install [options] [-e] <local project path> ...
py -m pip install [options] <archive url/path> ...

説明

パッケージをインストールする

  • 要件指定子を使用してPyPI(およびその他のインデックス)から。

  • VCSプロジェクトURLから。

  • ローカルプロジェクトディレクトリから。

  • ローカルまたはリモートのソースアーカイブから。

pipは「要件ファイル」からのインストールもサポートしており、インストールする環境全体を簡単に指定できます。

概要

pip installにはいくつかの段階があります

  1. 基本的な要件を特定します。ここでユーザーが指定した引数が処理されます。

  2. 依存関係を解決します。ここでインストールされるものが決定されます。

  3. ホイールをビルドします。可能な限りすべての依存関係がホイールにビルドされます。

  4. パッケージをインストールします(アップグレード/置換されるものはアンインストールします)。

pip installは、--upgradeが指定されていない限り、インストールされたバージョンをそのまま残すことを優先します。

引数の処理

インストール対象の項目を確認する場合、pipは次の順序で各項目のタイプをチェックします

  1. プロジェクトまたはアーカイブのURL。

  2. ローカルディレクトリ(pyproject.tomlまたはsetup.pyが含まれている必要があります。そうでない場合、pipはエラーを報告します)。

  3. ローカルファイル(sdistまたはwheel形式のアーカイブで、それらの形式の命名規則に従います)。

  4. バージョン指定子

識別された各項目は、インストールによって満たされるべき要件のセットに追加されます。

名前とバージョンの決定

各候補項目について、pipはプロジェクト名とバージョンを知る必要があります。ホイール(.whlファイル拡張子で識別)の場合、これはWheel仕様に従ってファイル名から取得できます。ローカルディレクトリまたは明示的に指定されたsdistファイルの場合、setup.py egg_infoコマンドを使用してプロジェクトメタデータが決定されます。インデックスを介して配置されたsdistの場合、ファイル名がプロジェクト名とバージョンについて解析されます(これは理論的にはegg_infoコマンドを使用するよりもわずかに信頼性が低いですが、不要な数のファイルのダウンロードと処理を回避します)。

任意のURLは#egg=name構文を使用できます(VCSサポートを参照)プロジェクト名を明示的に指定します。

要件の充足

pipが満たすべき要件のセットを取得したら、指定された制約を満たす最新のバージョンがインストールされるという単純なルールを使用して、各要件のどのバージョンをインストールするかを選択します(ただし、こちらを参照して、プレリリースバージョンに関する例外を確認してください)。選択されたバージョンのソースが複数ある場合、いずれのソースも許容されると想定されます(そうでなければバージョンが異なるためです)。

インストールされたものに関する情報の取得

installコマンドには、pipがインストールした内容のJSONレポートを生成する--reportオプションがあります。--dry-run--ignore-installedと組み合わせて、実際にインストールすることなく要件を解決するために使用できます。

レポートはファイルまたは標準出力に書き込むことができます(--report ---quietと組み合わせて使用します)。

JSONレポートの形式については、インストールレポートに記載されています。

インストール順序

注記

このセクションは、ランタイム依存関係のインストール順序に関するものであり、ビルド依存関係([build-system]テーブルを使用して指定)には適用されません。

v6.1.0以降、pipは依存関係をその依存関係の前に、つまり「トポロジカル順序」でインストールします。これは、pipが現在行っている順序に関する唯一の約束です。pipがインストール引数の順序または要件ファイルの項目の順序で偶然にものをインストールすることがあるかもしれませんが、これは約束ではありません。

依存関係のサイクル(別名「循環依存関係」)が発生した場合、現在の実装(後で変更される可能性があります)では、サイクルで最初に遭遇したメンバーが最後にインストールされます。

たとえば、quuxがfooに依存し、fooがbarに依存し、barがbazに依存し、bazがfooに依存する場合

$ python -m pip install quux
...
Installing collected packages baz, bar, foo, quux

$ python -m pip install bar
...
Installing collected packages foo, baz, bar
C:\> py -m pip install quux
...
Installing collected packages baz, bar, foo, quux

C:\> py -m pip install bar
...
Installing collected packages foo, baz, bar

v6.1.0より前では、pipはインストール順序について何も約束していませんでした。

トポロジカルにインストールするという決定は、環境を各ステップで利用可能な状態に保つ方法でインストールを進めるという原則に基づいています。これには、主に2つの実用的な利点があります

  1. インストール中の環境の同時使用がより機能する可能性が高くなります。

  2. インストールの失敗によって壊れた環境が残る可能性が低くなります。pipは最終的に失敗のロールバックをサポートしたいと考えていますが、今のところ、これは改善です。

新しいインストール順序は、ビルド依存関係を宣言するためにsetup_requiresの使用を置き換えることを目的としていません(そして置き換えていません)が、次のプロファイルに適合するsdistからのインストール(以前は失敗していた可能性があります)に役立つ場合があります

  1. それらは、install_requiresを使用してインストール依存関係としても宣言されているビルド依存関係を持っています。

  2. python setup.py egg_infoは、ビルド依存関係がインストールされていなくても機能します。

  3. 何らかの理由で、それらはsetup_requiresを使用してビルド依存関係を宣言しません。

要件ファイル形式

このセクションは要件ファイル形式に移動されました。

要件指定子

このセクションは要件指定子に移動されました。

要件ごとのオーバーライド

これは現在要件ファイル形式で説明されています。

プレリリースバージョン

v1.4以降、pipはデフォルトでプレリリースで指定された安定版のみをインストールします。バージョンが準拠したバージョンとして解析できない場合、プレリリースとみなされます。

要件指定子にプレリリースまたは開発バージョンが含まれている場合(例:>=0.0.dev0)、pipはその要件についてプレリリースと開発バージョンを許可します。これには!=フラグは含まれません。

pip installコマンドは、プレリリースと開発リリースのインストールを有効にする--preフラグもサポートしています。

VCSサポート

これは現在VCSサポートで説明されています。

パッケージの検索

pipはPyPI上のパッケージをHTTPシンプルインターフェースを使用して検索します。これはこちらこちらで説明されています。

pipは、パッケージの検索方法を変更するための多くのパッケージインデックスオプションを提供しています。

pip は、いくつかの場所からパッケージを検索します。PyPI(または --index-url で指定されたインデックス、--no-index で無効にされていない場合)、ローカルファイルシステム、および --find-links または --extra-index-url で指定された追加のリポジトリです。検索される場所の優先順位はありません。すべてチェックされ、要件に最も「適合する」もの(バージョン番号の観点から - 詳細については、仕様 を参照)が選択されます。

pip install の例 を参照してください。

SSL 証明書の検証

これは、HTTPS 証明書 で説明されています。

キャッシング

これは、キャッシング で説明されています。

Wheel キャッシュ

これは、キャッシング で説明されています。

ハッシュチェックモード

これは、安全なインストール で説明されています。

ローカルプロジェクトのインストール

これは、ローカルプロジェクトのインストール で説明されています。

編集可能なインストール

これは、ローカルプロジェクトのインストール で説明されています。

ビルドシステムインターフェース

これは、ビルドシステムインターフェース で説明されています。

オプション

-r, --requirement <file>

指定された requirements ファイルからインストールします。このオプションは複数回使用できます。

(環境変数: PIP_REQUIREMENT)

-c, --constraint <file>

指定された constraints ファイルを使用してバージョンを制限します。このオプションは複数回使用できます。

(環境変数: PIP_CONSTRAINT)

--no-deps

パッケージの依存関係をインストールしません。

(環境変数: PIP_NO_DEPS, PIP_NO_DEPENDENCIES)

--pre

プレリリース版と開発版を含めます。デフォルトでは、pip は安定版のみを見つけます。

(環境変数: PIP_PRE)

-e, --editable <path/url>

ローカルプロジェクトパスまたはVCS URLから、編集可能なモード(つまり、setuptoolsの「開発モード」)でプロジェクトをインストールします。

(環境変数: PIP_EDITABLE)

--dry-run

実際には何もインストールせず、インストールされるものを表示するだけです。 --ignore-installed と組み合わせて、要件を「解決」するために使用できます。

(環境変数: PIP_DRY_RUN)

-t, --target <dir>

<dir> にパッケージをインストールします。デフォルトでは、<dir> に既存のファイル/フォルダは置き換えられません。<dir> にある既存のパッケージを新しいバージョンに置き換えるには、 --upgrade を使用します。

(環境変数: PIP_TARGET)

--platform <platform>

<platform> と互換性のあるホイールのみを使用します。実行中のシステムのプラットフォームがデフォルトです。ターゲットインタープリターでサポートされている複数のプラットフォームを指定するには、このオプションを複数回使用します。

(環境変数: PIP_PLATFORM)

--python-version <python_version>

ホイールと「Requires-Python」の互換性チェックに使用するPythonインタープリターのバージョンです。実行中のインタープリターから導き出されたバージョンがデフォルトです。バージョンは、最大3つのドット区切りの整数(例:「3」は3.0.0、「3.7」は3.7.0、「3.7.3」は3.7.3)を使用して指定できます。メジャー・マイナーバージョンは、ドットなしの文字列(例:「37」は3.7.0)としても指定できます。

(環境変数: PIP_PYTHON_VERSION)

--implementation <implementation>

Python 実装 <implementation> と互換性のあるホイールのみを使用します(例:'pp'、'jy'、'cp'、または 'ip')。指定しない場合、現在のインタープリターの実装が使用されます。実装に依存しないホイールを強制するには 'py' を使用します。

(環境変数: PIP_IMPLEMENTATION)

--abi <abi>

Python abi <abi> と互換性のあるホイールのみを使用します(例:'pypy_41')。指定しない場合、現在のインタープリターの abi タグが使用されます。ターゲットインタープリターでサポートされている複数の abi を指定するには、このオプションを複数回使用します。一般的に、このオプションを使用する場合は、 --implementation、--platform、および --python-version を指定する必要があります。

(環境変数: PIP_ABI)

--user

プラットフォームのPythonユーザーインストールディレクトリにインストールします。通常は ~/.local/、またはWindowsでは %APPDATA%Python です。(詳細については、Python ドキュメントの site.USER_BASE を参照してください。)

(環境変数: PIP_USER)

--root <dir>

この代替ルートディレクトリを基準にしてすべてをインストールします。

(環境変数: PIP_ROOT)

--prefix <dir>

lib、bin、その他のトップレベルフォルダが配置されるインストールプレフィックスです。結果として得られるインストールには、pip の Python インタープリターを参照するスクリプトやその他のリソースが含まれている場合があり、--prefix の Python インタープリターではありません。別の(pipがない可能性のある)環境にパッケージをインストールする場合は、--python オプションも参照してください。

(環境変数: PIP_PREFIX)

--src <dir>

編集可能なプロジェクトをチェックアウトするディレクトリです。仮想環境でのデフォルトは「<venv path>/src」です。グローバルインストールのデフォルトは「<current dir>/src」です。

(環境変数: PIP_SRC, PIP_SOURCE, PIP_SOURCE_DIR, PIP_SOURCE_DIRECTORY)

-U, --upgrade

指定されたすべてのパッケージを最新バージョンにアップグレードします。依存関係の処理は、使用されるアップグレード戦略によって異なります。

(環境変数: PIP_UPGRADE)

--upgrade-strategy <upgrade_strategy>

依存関係のアップグレード方法を決定します [デフォルト: only-if-needed]。「eager」 - 依存関係は、現在インストールされているバージョンがアップグレードされたパッケージの要件を満たしているかどうかに関係なくアップグレードされます。「only-if-needed」 - アップグレードされたパッケージの要件を満たしていない場合にのみアップグレードされます。

(環境変数: PIP_UPGRADE_STRATEGY)

--force-reinstall

すでに最新バージョンであっても、すべてのパッケージを再インストールします。

(環境変数: PIP_FORCE_REINSTALL)

-I, --ignore-installed

インストール済みのパッケージを無視し、上書きします。既存のパッケージが異なるバージョンである場合、または異なるパッケージマネージャーでインストールされた場合、システムが壊れる可能性があります!

(環境変数: PIP_IGNORE_INSTALLED)

--ignore-requires-python

Requires-Python情報を無視します。

(環境変数: PIP_IGNORE_REQUIRES_PYTHON)

--no-build-isolation

最新のソース配布物をビルドする際の隔離を無効にします。このオプションを使用する場合は、PEP 518で指定されたビルド依存関係が既にインストールされている必要があります。

(環境変数: PIP_NO_BUILD_ISOLATION)

--use-pep517

ソース配布物のビルドにPEP 517を使用します(従来の動作を強制するには--no-use-pep517を使用します)。

(環境変数: PIP_USE_PEP517)

--check-build-dependencies

PEP517を使用する場合、ビルド依存関係をチェックします。

(環境変数: PIP_CHECK_BUILD_DEPENDENCIES)

--break-system-packages

pipが外部管理下のPythonインストールを変更することを許可します。

(環境変数: PIP_BREAK_SYSTEM_PACKAGES)

-C, --config-settings <settings>

PEP 517ビルドバックエンドに渡される設定。設定はKEY=VALUEの形式です。複数のキーをバックエンドに渡すには、複数の--config-settingsオプションを使用します。

(環境変数: PIP_CONFIG_SETTINGS)

--global-option <options>

installまたはbdist_wheelコマンドの前にsetup.py呼び出しに渡される追加のグローバルオプション。

(環境変数: PIP_GLOBAL_OPTION)

--compile

Pythonソースファイルをバイトコードにコンパイルします。

(環境変数: PIP_COMPILE)

--no-compile

Pythonソースファイルをバイトコードにコンパイルしません。

(環境変数: PIP_NO_COMPILE)

--no-warn-script-location

PATH外にスクリプトをインストールする場合の警告を表示しません。

(環境変数: PIP_NO_WARN_SCRIPT_LOCATION)

--no-warn-conflicts

壊れた依存関係に関する警告を表示しません。

(環境変数: PIP_NO_WARN_CONFLICTS)

--no-binary <format_control>

バイナリパッケージを使用しません。複数回指定でき、既存の値に追加されます。「:all:」で全てのバイナリパッケージを無効化、「:none:」でセットを空にしたり、コンマ区切りの1つ以上のパッケージ名を指定できます(コロンは不要)。ただし、一部のパッケージはコンパイルが難しく、このオプションを使用するとインストールに失敗する場合があります。

(環境変数: PIP_NO_BINARY)

--only-binary <format_control>

ソースパッケージを使用しません。複数回指定でき、既存の値に追加されます。「:all:」で全てのソースパッケージを無効化、「:none:」でセットを空にしたり、コンマ区切りの1つ以上のパッケージ名を指定できます。バイナリ配布がないパッケージは、このオプションを使用するとインストールに失敗します。

(環境変数: PIP_ONLY_BINARY)

--prefer-binary

ソースパッケージよりもバイナリパッケージを優先します。ソースパッケージの方が新しい場合でも優先されます。

(環境変数: PIP_PREFER_BINARY)

--require-hashes

繰り返し可能なインストールのために、各要件に対してハッシュをチェックすることを要求します。要件ファイル内のいずれかのパッケージに--hashオプションがある場合、このオプションは暗黙的に指定されます。

(環境変数: PIP_REQUIRE_HASHES)

--progress-bar <progress_bar>

プログレスバーを使用するかどうかを指定します [on, off, raw] (デフォルト: on)

(環境変数: PIP_PROGRESS_BAR)

--root-user-action <root_user_action>

rootユーザーとしてpipを実行する場合のアクション [warn, ignore] (デフォルト: warn)

(環境変数: PIP_ROOT_USER_ACTION)

--report <file>

pipが提供された要件をインストールするために実行した処理を記述するJSONファイルを作成します。 --dry-runと--ignore-installedと組み合わせて、要件を「解決」するために使用できます。ファイル名に-を使用すると、標準出力に出力されます。標準出力に出力する場合は、pipのログ出力をJSON出力と混在させないために--quietオプションと組み合わせてください。

(環境変数: PIP_REPORT)

--no-clean

ビルドディレクトリをクリーンアップしません。

(環境変数: PIP_NO_CLEAN)

-i, --index-url <url>

PythonパッケージインデックスのベースURL(デフォルトはhttps://pypi.org/simple)。これは、PEP 503(シンプルなリポジトリAPI)に準拠したリポジトリ、または同じ形式でレイアウトされたローカルディレクトリを指している必要があります。

(環境変数: PIP_INDEX_URL, PIP_PYPI_URL)

--extra-index-url <url>

--index-urlに加えて使用するパッケージインデックスの追加URL。 --index-urlと同じルールに従う必要があります。

(環境変数: PIP_EXTRA_INDEX_URL)

--no-index

パッケージインデックスを無視します(--find-links URLのみを参照します)。

(環境変数: PIP_NO_INDEX)

-f, --find-links <url>

HTMLファイルへのURLまたはパスである場合、sdist(.tar.gz)やwheel(.whl)ファイルなどのアーカイブへのリンクを解析します。ローカルパスまたはfile:// URLでディレクトリである場合、ディレクトリ一覧にあるアーカイブを探します。VCSプロジェクトURLへのリンクはサポートされていません。

(環境変数: PIP_FIND_LINKS)

  1. PyPIから要件指定子を使用してSomePackageとその依存関係をインストールします。

    python -m pip install SomePackage            # latest version
    python -m pip install 'SomePackage==1.0.4'   # specific version
    python -m pip install 'SomePackage>=1.0.4'   # minimum version
    
    py -m pip install SomePackage            # latest version
    py -m pip install "SomePackage==1.0.4"   # specific version
    py -m pip install "SomePackage>=1.0.4"   # minimum version
    
  2. ファイルに指定された要件のリストをインストールします。要件ファイルを参照してください。

    python -m pip install -r requirements.txt
    
    py -m pip install -r requirements.txt
    
  3. 既にインストールされているSomePackageをPyPIの最新バージョンにアップグレードします。

    python -m pip install --upgrade SomePackage
    
    py -m pip install --upgrade SomePackage
    

    注記

    これは、直接的な要件であるSomePackageの更新を保証し、インストールされているバージョンがSomePackageの最小要件を満たしていない場合、依存関係をアップグレードする可能性があります。依存関係の非必須更新(間接的な要件)は、--upgrade-strategyコマンドの影響を受けます。

  4. 「編集可能」モードでローカルプロジェクトをインストールします。編集可能インストールに関するセクションを参照してください。

    python -m pip install -e .                # project in current directory
    python -m pip install -e path/to/project  # project in another directory
    
    py -m pip install -e .                 # project in current directory
    py -m pip install -e path/to/project   # project in another directory
    
  5. VCSからプロジェクトをインストールします。

    python -m pip install 'SomeProject@git+https://git.repo/some_pkg.git@1.3.1'
    
    py -m pip install "SomeProject@git+https://git.repo/some_pkg.git@1.3.1"
    
  6. 「編集可能」モードでVCSからプロジェクトをインストールします。VCSサポート編集可能インストールに関するセクションを参照してください。

    python -m pip install -e 'git+https://git.repo/some_pkg.git#egg=SomePackage'          # from git
    python -m pip install -e 'hg+https://hg.repo/some_pkg.git#egg=SomePackage'            # from mercurial
    python -m pip install -e 'svn+svn://svn.repo/some_pkg/trunk/#egg=SomePackage'         # from svn
    python -m pip install -e 'git+https://git.repo/some_pkg.git@feature#egg=SomePackage'  # from 'feature' branch
    python -m pip install -e 'git+https://git.repo/some_repo.git#egg=subdir&subdirectory=subdir_path' # install a python package from a repo subdirectory
    
    py -m pip install -e "git+https://git.repo/some_pkg.git#egg=SomePackage"          # from git
    py -m pip install -e "hg+https://hg.repo/some_pkg.git#egg=SomePackage"            # from mercurial
    py -m pip install -e "svn+svn://svn.repo/some_pkg/trunk/#egg=SomePackage"         # from svn
    py -m pip install -e "git+https://git.repo/some_pkg.git@feature#egg=SomePackage"  # from 'feature' branch
    py -m pip install -e "git+https://git.repo/some_repo.git#egg=subdir&subdirectory=subdir_path" # install a python package from a repo subdirectory
    
  7. エクストラ、つまりオプションの依存関係を含むパッケージをインストールします(仕様)。

    python -m pip install 'SomePackage[PDF]'
    python -m pip install 'SomePackage[PDF] @ git+https://git.repo/SomePackage@main#subdirectory=subdir_path'
    python -m pip install '.[PDF]'  # project in current directory
    python -m pip install 'SomePackage[PDF]==3.0'
    python -m pip install 'SomePackage[PDF,EPUB]'  # multiple extras
    
    py -m pip install "SomePackage[PDF]"
    py -m pip install "SomePackage[PDF] @ git+https://git.repo/SomePackage@main#subdirectory=subdir_path"
    py -m pip install ".[PDF]"  # project in current directory
    py -m pip install "SomePackage[PDF]==3.0"
    py -m pip install "SomePackage[PDF,EPUB]"  # multiple extras
    
  8. 特定のソースアーカイブファイルをインストールします。

    python -m pip install './downloads/SomePackage-1.0.4.tar.gz'
    python -m pip install 'http://my.package.repo/SomePackage-1.0.4.zip'
    
    py -m pip install "./downloads/SomePackage-1.0.4.tar.gz"
    py -m pip install "http://my.package.repo/SomePackage-1.0.4.zip"
    
  9. 直接参照に従って特定のソースアーカイブファイルをインストールします(仕様)。

    python -m pip install 'SomeProject@http://my.package.repo/SomeProject-1.2.3-py33-none-any.whl'
    python -m pip install 'SomeProject @ http://my.package.repo/SomeProject-1.2.3-py33-none-any.whl'
    python -m pip install 'SomeProject@http://my.package.repo/1.2.3.tar.gz'
    
    py -m pip install "SomeProject@http://my.package.repo/SomeProject-1.2.3-py33-none-any.whl"
    py -m pip install "SomeProject @ http://my.package.repo/SomeProject-1.2.3-py33-none-any.whl"
    py -m pip install "SomeProject@http://my.package.repo/1.2.3.tar.gz"
    
  10. 代替パッケージリポジトリからインストールします。

    PyPIではなく、別のインデックスからインストールします。

    python -m pip install --index-url http://my.package.repo/simple/ SomePackage
    
    py -m pip install --index-url http://my.package.repo/simple/ SomePackage
    

    アーカイブを含むローカルフラットディレクトリからインストールし、インデックスをスキャンしません。

    python -m pip install --no-index --find-links=file:///local/dir/ SomePackage
    python -m pip install --no-index --find-links=/local/dir/ SomePackage
    python -m pip install --no-index --find-links=relative/dir/ SomePackage
    
    py -m pip install --no-index --find-links=file:///local/dir/ SomePackage
    py -m pip install --no-index --find-links=/local/dir/ SomePackage
    py -m pip install --no-index --find-links=relative/dir/ SomePackage
    

    PyPIに加えて、インストール中に追加のインデックスを検索します。

    警告

    メインリポジトリにないパッケージ(プライベートパッケージなど)を検索するためにこのオプションを使用することは、依存関係の混乱と呼ばれるセキュリティの脆弱性により安全ではありません。攻撃者は、プライベートパッケージよりも優先的に選択されるように、公開リポジトリでパッケージを主張することができます。

    python -m pip install --extra-index-url http://my.package.repo/simple SomePackage
    
    py -m pip install --extra-index-url http://my.package.repo/simple SomePackage
    
  11. 安定版に加えて、プレリリース版と開発版も検索します。デフォルトでは、pipは安定版のみを検索します。

    python -m pip install --pre SomePackage
    
    py -m pip install --pre SomePackage
    
  12. ソースからパッケージをインストールします。

    バイナリーパッケージは使用しません。

    python -m pip install SomePackage1 SomePackage2 --no-binary :all:
    
    py -m pip install SomePackage1 SomePackage2 --no-binary :all:
    

    SomePackage1をソースからインストールするように指定します。

    python -m pip install SomePackage1 SomePackage2 --no-binary SomePackage1
    
    py -m pip install SomePackage1 SomePackage2 --no-binary SomePackage1