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 ユーザが利用できるよう
  に、オープンソースでライセンスされています。

* the Python Packaging Authority is the group of developers and
  documentation authors responsible for the maintenance and evolution
  of the standard packaging tools and the associated metadata and file
  format standards. They maintain a variety of tools, documentation,
  and issue trackers on both GitHub and Bitbucket.

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