#
5 Distutils 設定ファイル

上で述べたように、 Distutils 設定ファイルを使えば、任意の Distutils オプションに対して個人的な設定やサイト全体の設定を 記録できます。すなわち、任意のコマンドの任意のオプションを 二つか三つ (プラットフォームによって異なります) の 設定ファイルに保存でき、コマンドラインを解釈する前にオプションを 問い合わせさせるようにできます。 つまり、設定ファイルはデフォルトの値を上書きし、さらにコマンドライン 上で与えた値が設定ファイルの内容を上書きするわけです。 さらに、複数の設定ファイルが適用されると、``先に'' 適用された ファイルに指定されていた値は ``後に'' 適用されたファイル内の 値で上書きされます。

##
5.1 設定ファイルの場所と名前

設定ファイルの名前と場所は、非常にわずかですがプラットフォーム間で 異なります。Unixでは、三種類の設定ファイルは以下のようになります (処理される順に並んでいます):

設定ファイルのタイプ | 場所とファイル名 | 注記
--- | --- | ---
system | prefix/lib/pythonver/distutils/distutils.cfg | (1)
personal | $HOME/.pydistutils.cfg | (2)
local | setup.cfg | (3)

Windows では設定ファイルは以下のようになります:

設定ファイルのタイプ | 場所とファイル名 | 注記
--- | --- | ---
system | prefix\Lib\distutils\distutils.cfg | (4)
personal | %HOME%\pydistutils.cfg | (5)
local | setup.cfg | (3)

Mac OS では以下のようになります:

設定ファイルのタイプ | 場所とファイル名 | 注記
--- | --- | ---
system | prefix:Lib:distutils:distutils.cfg | (6)
personal | N/A |
local | setup.cfg | (3)

注記:

(1)
  厳密に言えば、システム全体向けの設定ファイルは、 Distutils がインストールされているディレクトリになります; Unixの Python 1.6 以降では、表の通りの場所になります。 Python 1.5.2 では、 Distutils は 通常 prefix/lib/python1.5/site-packages/distutils にインストールされるため、 Python 1.5.2 では設定ファイルをそこに 置かなければなりません。
(2)
  Unixでは、環境変数 HOME が定義されていない場合、 標準モジュール `pwd` の `getpwuid()` 関数を使ってユーザのホームディレクトリを決定します。
(3)
  現在のディレクトリ (通常は setup スクリプトがある場所) です。
(4)
  (注記 (1) も参照してください) Python 1.6 およびそれ以降の バージョンでは、 Python のデフォルトの ``インストールプレフィクス'' は C:\Python なので、システム設定ファイルは通常 C:\Python\Lib\distutils\distutils.cfg になります。Python 1.5.2 ではデフォルトの プレフィクスは C:\Program Files\Python であり、Distutils は標準ライブラリの一部ではありません -- 従って、 システム設定ファイルは、 Windows 用の標準の Python 1.5.2 では C:\Program Files\Python\distutils\distutils.cfg になります。
(5)
  Windows では、環境変数 HOME が設定されていない場合、 個人用の設定ファイルはどこにもなく、使われることもありません。 (言い換えれば、 Windows での Distutils はホームディレクトリが どこにあるか一切推測しようとしないということです。)
(6)
  (注釈 (1) と (4) も参照してください) デフォルトの インストールプレフィクスは単に Python: なので、 Python 1.6 以降では、通常は Python:Lib:distutils:distutils.cfg になります。

##
5.2 設定ファイルの構文

Distutils 設定ファイルは、全て同じ構文をしています。 設定ファイルはセクションでグループ分けされています。 各 Distutils コマンドごとにセクションがあり、それに加えて 全てのコマンドに影響するグローバルオプションを設定するための `global` セクションがあります。各セクションには `option=value` の形で、一行あたり一つのオプションを指定します。

例えば、以下は全てのコマンドに対してデフォルトでメッセージを出さない よう強制するための完全な設定ファイルです:

    [global]
    verbose=0

この内容のファイルがシステム全体用の設定ファイルとしてインストール されていれば、そのシステムの全てのユーザによる全ての Python モジュール 配布物に対する処理に影響します。ファイルが (個人用の設定をサポート しているシステムで) 個人用の設定ファイルとしてインストールされていれば、 そのユーザが処理するモジュール配布物にのみ影響します。 この内容を特定のモジュール配布物の setup.cfg として使えば、 その配布物だけに影響します。

以下のようにして、デフォルトの ``ビルドベース'' ディレクトリを オーバライドしたり、`build*` コマンドが常に強制的にリビルドを 行うようにもできます:

    [build]
    build-base=blib
    force=1

この設定は、コマンドライン引数の

    python setup.py build --build-base=blib --force

に対応します。ただし、後者ではコマンドライン上で `build` コマンドを含めて、そのコマンドを実行するよう意味しているところが 違います。 特定のコマンドに対するオプションを設定ファイルに含めると、 このような関連付けの必要はなくなります; あるコマンドが実行されると、そのコマンドに対するオプションが適用 されます。 (また、設定ファイル内からオプションを取得するような他のコマンドを 実行した場合、それらのコマンドもまた設定ファイル内の対応するオプション の値を使います。)

あるコマンドに対するオプションの完全なリストは、 例えば以下のように、--help を使って調べます:

    python setup.py build --help

グローバルオプションの完全なリストを得るには、コマンドを指定せずに --help オプションを使います:

    python setup.py --help

``Python モジュールの配布'' マニュアルの、 ``リファレンスマニュアル'' の節も参照してください。