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

Email:

  distutils-sig@python.org

人気のあるオープンソース開発プロジェクトがそうであるように、Python には貢献者たちとユーザたちの活発なサポートコミュニティがあり、またこれらはほかの Python 開発者たちに、彼らのソフトウェアのオープンソースライセンスのもとでの利用も可能にしてくれています。

これはほかの人が既に挙げた共通の(あるいは時折極めて稀有な!)問題や、彼ら自身の解法による潜在的な貢献が共通の場所に蓄えられることによる恩恵によって、Python ユーザに共有と協調を効果的に行なうことの助けとなっています。

このガイドはこれらプロセスのうち、インストールについてをカバーします。あなた自身の Python プロジェクトを作成し、共有するためのガイドについては Python packaging user guide を参照してください。

注釈

あなたが企業や組織のユーザであれば、多くの組織がオープンソースソフトウェアの利用と貢献に関する彼ら独自のポリシーを持っていることに気をつけてください。Python によって提供される配布とインストールのツールを利用する際には、そのようなポリシーを考慮に入れてください。

## 重要用語集

- `pip` は推奨されるインストーラ・プログラムです。 Python 3.4 からは、 Python バイナリ・インストーラに最初から付属するようになりました。

- 仮想環境 は、システム全体にインストールするのではなく、特定のアプリケーションで使用するためにパッケージをインストールできるようにする半独立型のPython環境です。

- `venv` は仮想環境をつくるための標準ツールです。 Python 3.3 から Python の一部になりました。 Python 3.4 以降では、仮想環境をつくる際はそのすべてで `pip` をインストールするように、あらかじめ設定されています。

- `virtualenv` は `venv` のサードパーティの代替案 (で前身) です。 `virtualenv` により仮想環境を Python 3.4 より前のバージョンで使うことが出来ます。 以前のバージョンは `venv` を提供していませんし、作成された環境に `pip` を自動的にインストールすることも出来ません。

- Python Package Index は Python パッケージのパブリック・リポジトリです。このリポジトリのパッケージは、他の Python ユーザが利用できるように、オープンソースでライセンスされています。

- Python Packaging Authority は、標準のパッケージングツール、関連するメタデータとファイルフォーマット標準の保守と発展を担っている、開発者・ドキュメントの著者のグループです。彼らは様々なツールやドキュメント、issue tracker を GitHub で管理しています。

- `distutils` はオリジナルのビルド・配布システムで、 Python 標準ライブラリに 1998 年に最初に追加されました。 `distutils` の直接的な利用は段階的に取り払われていきますが、それは今でも現時点でのパッケージングと配布のインフラストラクチャの基礎として鎮座していて、標準ライブラリの一部として残っているだけでなく、その名前はほかの文脈でも生き続けています(Python のパッケージング標準の開発をまとめるのに使われているメーリングリストの名前のように)。

バージョン 3.5 で変更: 仮想環境の作成には、 `venv` の使用が今は推奨されています。

参考

Python Packaging User Guide: Creating and using virtual environments

## 基本的な使い方

パッケージングのための標準ツールはすべてコマンドラインから使われることを想定しています。

以下のコマンドは、モジュールの最新バージョンとそれが依存するモジュールを、 Python Package Index からインストールします。

    python -m pip install SomePackage

注釈

POSIX ユーザ(macOS と Linux ユーザを含みます)向けには、このガイド内の例は、 virtual environment の利用を前提にしています。

Windows ユーザ向けには、このガイド内の例は、Python インストール時にシステムの PATH 環境変数が調整されていることを前提にしています。

正確なバージョンや最小のバージョンをコマンドライン上で直接指定することもできます。`>` や `<` などの比較演算子など、シェルが解釈する特殊文字を使う場合、パッケージ名とバージョンを二重引用符で囲んでください:

    python -m pip install SomePackage==1.0.4    # specific version
    python -m pip install "SomePackage>=1.0.4"  # minimum version

通常、適合するモジュールがインストール済である場合にそれを再度 install 実行を試みても効果はありません。既に存在しているモジュールのアップグレードには、明示的にそれを要求しなければなりません:

    python -m pip install --upgrade SomePackage

`pip` とその機能についての詳しい情報とリソースは Python Packaging User Guide にあります。

仮想環境の作成は `venv` モジュールを通して行われます。 有効な仮想環境にインストールするには 上記のコマンドを使います。

参考

Python Packaging User Guide: Installing Python Distribution Packages

## どうすればいいの...？

以下はよくある課題への簡単な回答もしくは回答へのリンクです。

### ... pip を 3.4 より前のバージョンの Python でインストールするには？

`pip` が Python に付属するのは 3.4 以降です。それ以前のバージョンでは、 "Python Packaging User Guide" の記載にしたがって `pip` 自体をインストールする必要があります。

参考

Python Packaging User Guide: Requirements for Installing Packages

### ... パッケージを現在のユーザ用のみにインストールするには？

`python -m pip install` に `--user` オプションを付けてください。パッケージはシステムのすべてのユーザ用にではなく、現在のユーザ用のみにインストールされます。

### ... 科学技術計算用の Python パッケージをインストールするには？

科学技術計算用の Python パッケージの多くがバイナリモジュールに複雑に依存しており、現在のところ `pip` を直接使ってインストールすることは容易ではありません。現時点では `pip` を使ってインストールしようとするよりも、 別の手段 を用いてインストールするほうが、多くの場合簡単でしょう。

参考

Python Packaging User Guide: Installing Scientific Packages

### ... インストールされた複数のバージョンの Python を並行して使うには？

Linux や macOS、その他の POSIX システムでは、バージョン番号付きの Python コマンドと `-m` スイッチを組み合わせて用いて、適切なバージョンの `pip` を実行してください。

    python2   -m pip install SomePackage  # default Python 2
    python2.7 -m pip install SomePackage  # specifically Python 2.7
    python3   -m pip install SomePackage  # default Python 3
    python3.4 -m pip install SomePackage  # specifically Python 3.4

適切にバージョン番号が付された `pip` コマンドが使えることもあります。

Windows では、 Python ランチャーの `py` を `-m` スイッチとの組み合わせで使ってください。

    py -2   -m pip install SomePackage  # default Python 2
    py -2.7 -m pip install SomePackage  # specifically Python 2.7
    py -3   -m pip install SomePackage  # default Python 3
    py -3.4 -m pip install SomePackage  # specifically Python 3.4

## よくあるインストールに関する問題

### Linux で、システムの Python 内にインストールする

Linux システムでは、 Python のインストールは典型的には linux ディストリビューションの一部に含まれています。この Python インストールへのインストールには、システムに対する root 権限が必要で、また、 `pip` によって期待されているものとは異なるコンポーネントにアップグレードすることで、システムのパッケージマネージャのオペレーションやシステムのほかのコンポーネントの邪魔をするかもしれません。

そのようなシステムでは、 `pip` でパッケージをインストールする際には仮想環境を使うか、ユーザごとのインストールを行うのが、大抵良い方法です。

### pip がインストールされていない

`pip` がデフォルトでインストールされていないことがあります。 次のコマンドで問題の解決が見込めます:

    python -m ensurepip --default-pip

他にも pip のインストール についての資料があります。

### バイナリの拡張のインストール

Python プロジェクトの多くはソースに基いた配布に強く依存しており、インストールプロセスの一環として、エンドユーザ環境でソースから拡張モジュールをコンパイルすることを期待します。

バイナリ `wheel` フォーマットのサポートが導入されたことで、また、少なくとも Windows と macOS についての wheels の公開が Python Package Index を通して出来るようになったことで、この問題についての開発者の時間の節約と、ユーザにとっては自身でビルドせずにビルド済み拡張をインストールするさらなる標準化に繋がるかもしれません。

ビルド済み `wheel` ファイルが未だ入手出来ない scientific software インストールにおけるいくつかの解法が、ローカルにビルドすることなく他のバイナリ拡張を得る助けになるかもしれません。

参考

Python Packaging User Guide: Binary Extensions