# 28.2. `ensurepip` --- `pip` インストーラのブートストラップ

バージョン 3.4 で追加.

`ensurepip` パッケージは `pip` インストーラを既にインストールされている Python 環境や仮想環境にブートストラップする助けになります。このブートストラップのアプローチは `pip` が独立したリリースサイクルを持ち、最新の利用可能な安定版が CPython リファレンスインタープリタのメンテナンスリリースや feature リリースにバンドルされていることを反映しています。

ほとんどの場合、Python のエンドユーザーがこのモジュールを直接呼び出す必要はないでしょう(`pip` はデフォルトでブートストラップされるからです)。しかし、もし Python のインストール時に `pip` のインストールをスキップしたり、仮想環境を構築したり、明示的に `pip` をアンインストールした場合、直接呼び出す必要があるかもしれません。

注釈

このモジュールはインターネットに アクセスしません。`pip` のブートストラップに必要な全てはこのパッケージの一部として含まれています。

参考

Python モジュールのインストール

  エンドユーザーが Python パッケージをインストールする際のガイドです。

PEP 453: Python インストールの際の明示的なpipのブートストラッピング

  このモジュールのもともとの論拠と仕様。

## 28.2.1. コマンドラインインターフェイス

コマンドラインインターフェースを起動するには `-m` スイッチをつけてインタープリターを使用します。

最も簡単な起動方法は:

    python -m ensurepip

この起動方法は `pip` をインストールします。既にインストールされていた場合は何もしません。インストールされた `pip` のバージョンを `ensurepip` にバンドルされているもののうち、できるだけ新しいものにするためには、`--upgrade` オプションを追加して:

    python -m ensurepip --upgrade

デフォルトでは、`pip` は現在の仮想環境(もしアクティブなら)か、システムのサイトパッケージ(もしアクティブな仮想環境がなければ)にインストールされます。インストール先は２つの追加コマンドラインオプションで制御できます:

- `--root <dir>`: 現在のアクティブな仮想環境(もしあれば)の root や現在インストールされている Python の root ディレクトリに入れる代わりに、与えられたディレクトリを root として `pip` をインストールします。

- `--user`: は、現在インストールされている Python にグローバルにインストールされる代わりに、ユーザーの site packages ディレクトリに `pip` をインストールします(このオプションはアクティブな仮想環境のもとでは許可されません)。

デフォルトでは `pipX` と `pipX.Y` がインストールされます(X.Yは `ensurepip` を起動したPythonのバージョン)。インストールされるスクリプトは2つの追加コマンドラインオプションで制御できます:

- `--altinstall`: alternate インストール。X.Y でバージョン付けされたものだけがインストールされます。

- `--default-pip`: もし "default pip" のインストールが要求されたなら

    この `pip` スクリプトは2つの標準スクリプトと共にインストールされます。

2つのスクリプト選択オプションを指定すると例外が発生します。

バージョン 3.6.3 で変更: コマンドが失敗した場合、終了ステータスは非ゼロです。

## 28.2.2. モジュール API

`ensurepip` はプログラムから利用出来る 2 つの関数を公開しています:

`ensurepip.``version`()

  環境にブートストラップする際にインストールされることになる pip のバンドルバージョンを示す文字列を返します。

`ensurepip.``bootstrap`(root=None, upgrade=False, user=False, altinstall=False, default_pip=False, verbosity=0)

  現在の環境あるいは指示された環境へ `pip` をブートストラップします。

  root で、インストールの root ディレクトリを変更します。 root が `None` の場合は、インストールは現在の環境でのデフォルトの場所を使います。

  upgrade で、 `pip` のバンドルのバージョンとして、インストール済みの以前のバージョンをアップグレードするかどうかを指定します。

  user で、グローバルなインストールではなく user スキームを使うかどうかを指定します。

  デフォルトではスクリプト `pipX` と `pipX.Y` はインストールされます(X.YはPythonの現在のバージョンです)。

  altinstall が設定されていた場合は `pipX` はインストール されません。

  default_pip がセットされていれば、 `pip` スクリプトが2つの標準スクリプトと共にインストールされます。

  altinstall と default_pip の両方を指定すると、 `ValueError` を起こします。

  verbosity でブートストラップ操作からの `sys.stdout` への出力の冗長レベルをコントロールします。

  注釈

  ブートストラップ処理は `sys.path`, `os.environ` の両方に対して副作用を持ちます。代わりに、サブプロセスとしてコマンドラインインターフェイスを使うことで、これら副作用を避けることが出来ます。

  注釈

  ブートストラップ処理は `pip` によって必要とされるモジュールを追加インストールするかもしれませんが、ほかのソフトウェアはそれら依存物がいつもデフォルトで存在していることを仮定すべきではありません(将来のバージョンの `pip` ではその依存はなくなるかもしれませんので)。