# 3.28 `site` -- サイト固有の設定フック

このモジュールは初期化中に自動的にインポートされます。

Pythonの初期のバージョンでは(1.5a3を含むそれまでは)、サイト固有のモジュールを使う必要のあるスクリプトやモジュールは"`import site`"をコードの先頭付近に置いていました。もはやこれは必要ありません。

これはサイト固有のパスをモジュール検索パスへ付け加えます。

前部と後部からなる最大で四つまでのディレクトリを作成することから始めます。前部には、`sys.prefix`と`sys.exec_prefix`を使用します。空の前部は省略されます。後部には、(MacintoshやWindowsでは)空文字列を使用し、(Unixでは)最初にlib/python2.3/site-packagesを使ってからlib/site-pythonを使います。別個の前部-後部の組み合わせのそれぞれに対して、それが存在するディレクトリを参照しているかどうかを調べ、もしそうならば`sys.path`へ追加します。そして、設定ファイルを新しく追加されたパスからも検索します。

パス設定ファイルはpackage.pthという形式の名前をもつファイルです。その内容は`sys.path`に追加される追加項目(一行に一つ)です。存在しない項目は`sys.path`へは決して追加されませんが、項目が(ファイルではなく)ディレクトリを参照しているかどうかはチェックされません。項目が`sys.path`へ二回以上追加されることはありません。空行と`#`で始まる行は読み飛ばされます。`import`で始まる行は実行されます。

例えば、`sys.prefix`と`sys.exec_prefix`が/usr/localに設定されていると仮定します。そのときPython 2.3.3 ライブラリは/usr/local/lib/python2.3にインストールされています(ここで、`sys.version`の最初の三文字だけがインストールパス名を作るために使われます)。ここにはサブディレクトリ/usr/local/lib/python2.3/site-packagesがあり、その中に三つのサブディレクトリfoo、barおよびspamと二つのパス設定ファイルfoo.pthとbar.pthをもつと仮定します。foo.pthには以下のものが記載されていると想定してください:

    # foo package configuration

    foo
    bar
    bletch

また、bar.pthには:

    # bar package configuration

    bar

が記載されているとします。そのとき、次のディレクトリが`sys.path`へこの順番んで追加されます:

    /usr/local/lib/python2.3/site-packages/bar
    /usr/local/lib/python2.3/site-packages/foo

bletchは存在しないため省略されるということに注意してください。barディレクトリはfooディレクトリの前に来ます。なぜなら、bar.pthがアルファベット順でfoo.pthの前に来るからです。また、spamはどちらのパス設定ファイルにも記載されていないため、省略されます。

これらのパス操作の後に、`sitecustomize` という名前のモジュールをインポートしようします。そのモジュールは任意のサイト固有のカスタマイゼーションを行うことができます。`ImportError`例外が発生してこのインポートに失敗した場合は、何も表示せずに無視されます。

いくつかの非Unixシステムでは、`sys.prefix`と`sys.exec_prefix`は空で、パス操作は省略されます。しかし、`sitecustomize` のインポートはそのときでも試みられます。