2 標準的なビルド・インストール作業

1.2 節で述べたよいうに、 Distutils を使ったモジュール 配布物のビルドとインストールは、通常は単純なコマンド:

python setup.py install
で行います。

Unixでは、このコマンドをシェルプロンプトで行います; Windows では、 コマンドプロンプトウィンドウ (``DOS ボックス'') を開いて、そこで 行います; Mac OS の場合、作業はもう少しだけ複雑です (下記参照)


2.1 プラットフォームによる違い

setup コマンドは常に配布物ルートディレクトリ、すなわちモジュールの ソース配布物を展開した際のトップレベルのサブディレクトリ内で 実行しなければなりません。例えば、あるモジュールのソース配布物 foo-1.0.tar.gzUnix システム上にダウンロードしたなら、 通常は以下の操作を行います:

gunzip -c foo-1.0.tar.gz | tar xf -    # unpacks into directory foo-1.0
cd foo-1.0
python setup.py install
Windows では、おそらく foo-1.0.zip をダウンロードしている でしょう。アーカイブファイルを C:\Temp に ダウンロードしたのなら、(WinZip のような) グラフィカルユーザ インタフェースつきのアーカイブ操作ソフトや、 (unzippkunzip のような) コマンドラインツールを使って アーカイブを展開します。次に、コマンドプロンプトウィンドウ (``DOS ボックス'') を開いて、以下を実行します:

cd c:\Temp\foo-1.0
python setup.py install


2.2 ビルド作業とインストール作業を分割する

setup.py install を実行すると、一度の実行で全てのモジュールを ビルドしてインストールします。段階的に作業をしたい場合 -- ビルド プロセスをカスタマイズしたり、作業がうまくいかない場合に特に便利 です -- には、setup スクリプトに一度に一つづつ作業を行わせるよう にできます。この機能は、ビルドとインストールを異なるユーザで 行う場合にも便利です -- 例えば、モジュール配布物をビルドしておいて システム管理者に渡して (または、自分でスーパユーザになって) 、 インストールしたくなるかもしれません.

最初のステップでは全てをビルドしておき、次のステップで 全てをインストールするには、 setup スクリプトを二度起動します:

python setup.py build
python setup.py install
この作業を行ってみれば、install コマンドを実行すると まず build コマンドを実行し、さらに -- この場合には -- build ディレクトリの中が全て最新の状態になっているので、 build は何も行わなくてよいと判断していることが わかるでしょう。

インターネットからダウンロードしたモジュールをインストールしたい だけなら、上のように作業を分割する機能は必要ないかもしれませんが、 この機能はより進んだ使い方をする際にはとても便利です。 自作の Python モジュールや拡張モジュールを配布することになれば、 個々の Distutils コマンドを自分で何度も実行することになるでしょう。


2.3 ビルドの仕組み

上で示唆したように、 build コマンドは、インストールすべき ファイルを ビルドディレクトリ (build directory) に置く働きが あります。デフォルトでは、ビルドディレクトリは配布物ルート下の build になります; システムの処理速度に強いこだわりがあったり、 ソースツリーに指一本触れたくないのなら、--build-base オプションを使ってビルドディレクトリを変更できます。例えば:

python setup.py build --build-base=/tmp/pybuild/foo-1.0
(あるいは、システム全体向け、あるいは個人用の Distutils 設定ファイルに ディレクティブを書いて、永続的に設定を変えられます; 5 節を参照してください。) 通常は必要ない作業です。

ビルドツリーのデフォルトのレイアウトは以下のようになっています:

--- build/ --- lib/
または
--- build/ --- lib.<plat>/
               temp.<plat>/
<plat> は、現在の OS/ハードウェアプラットフォームと Python のバージョンを記述する短い文字列に展開されます。 第一の lib ディレクトリだけの形式は、 ``pure モジュール配布物'' -- すなわち、pure Python モジュールだけの入ったモジュール配布物 -- の場合に使われます。モジュール配布物に何らかの拡張モジュール (C/C++ で書かれたモジュール) が入っている場合、第二の <plat> 付きディレクトリが二つある形式が使われます。この場合、 temp.plat ディレクトリには、コンパイル/リンク 過程で生成され、実際にはインストールされない一時ファイルが収められます。 どちらの場合にも、lib (または lib.plat) ディレクトリには、最終的にインストールされることになる全ての Python モジュール (pure Python モジュールおよび拡張モジュール) が入ります。

今後、 Python スクリプト、ドキュメント、バイナリ実行可能形式、 その他 Python モジュールやアプリケーションのインストール作業に 必要なディレクトリが追加されるかもしれません。


2.4 インストールの仕組み

build コマンドを実行した後 (明示的に実行した場合も、 install コマンドが代わりに実行してくれた場合も) は、 install コマンドの仕事は比較的単純なもの: build/lib (または build/lib.plat) の下にあるもの全ての 指定したインストールディレクトリへのコピー、になります。

インストールディレクトリを選ばなかった場合 -- すなわち、 setup.py install を実行しただけの場合 -- には、install コマンドはサードパーティ製 Python モジュールを置くための標準の場所に インストールを行います。この場所は、プラットフォームや、Python 自体を どのようにビルド/インストールしたかで変わります。 Unix や Mac OS では、インストールしようとするモジュール配布物が pure Python なのか、 拡張モジュールを含む (``非 pure'') のかによっても異なります:

プラットフォーム 標準のインストール場所 デフォルト値 注記
Unix (pure) prefix/lib/python2.4/site-packages /usr/local/lib/python2.4/site-packages (1)
Unix (非 pure) exec-prefix/lib/python2.4/site-packages /usr/local/lib/python2.4/site-packages (1)
Windows prefix C:\Python (2)
Mac OS (pure) prefix:Lib:site-packages Python:Lib:site-packages
Mac OS (非 pure) prefix:Lib:site-packages Python:Lib:site-packages

注記:

(1)
ほとんどの Linux ディストリビューションには、システムの 標準インストール物として Python が入っているので、 Linux では普通、 prefixexec-prefix はどちらも /usr になります。 Linux (または Unixライクなシステム) 上で自分で Python をビルドした場合、デフォルトの prefix および exec-prefix/usr/local になります。
(2)
Windows での Python のデフォルトインストールディレクトリは、 Python 1.6a1、 1.5.2、およびそれ以前のバージョンでは C:\Program Files\Python です。

prefix および exec-prefix は、 Python がインストール されているディレクトリと、実行時にライブラリを探しにいく場所を表します。 これらのディレクトリは、Windows と Mac OS では常に同じで、 Unixでも ほぼ常に同じです。自分の Python がどんな prefixexec-prefix を使っているかは、Python を対話モードで起動して、 単純なコマンドをいくつか入力すればわかります。 Windows では、スタート > (すべての) プログラム > Python 2.4 > Python (command line) を選びます。 Mac OS 9 では、 PythonInterpreter を起動します。 インタプリタを起動すると、プロンプトに Python コードを入力 できます。例えば、作者の使っている Linux システムで、三つの Python 文を以下のように入力すると、出力から作者のシステムの prefixexec-prefix を得られます:

Python 2.4 (#26, Aug  7 2004, 17:19:02) 
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.prefix
'/usr'
>>> sys.exec_prefix
'/usr'

モジュールを標準の場所にインストールしたくない場合や、標準の場所に インストールするためのファイル権限を持っていない場合、 3 節にある、別の場所へのインストール方法の説明を読んでください。 インストール先のディレクトリを大幅にカスタマイズしければ、  4 節のカスタムインストールに関する説明を読んでください。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。