3.21 標準モジュール site

 

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

パイソンの初期のバージョン(1.5a3まで)では、 サイト特有のモジュールを使用する必要があるスクリプトやモジュールは、 コードの先頭近くのどこかに、"import site"と書く必要がありました。これはもはや必要ありません。

これは、サイト特有のパスをモジュール検索パスに追加します。 

これは前部と後部から4つまでのディレクトリを構築することから始めます。 前部に対してはsys.prefixsys.exec_prefixを使用します。 空の前部はスキップされます。 後部に対しては、空文字列(MacintoshまたはWindows上では)を使うか、 先ず"lib/pythonversion/site-packages"を使い次に "lib/site-python"(Unix上では)を使います。 異なる前部・後部の組み合わせのそれぞれに対して、存在するディレクトリを 参照しているかどうかを調べて存在すればsys.pathに追加し、 パスコンフィグレーションファイルも調べます。   
パスコンフィグレーションファイルは、"package.pth"という名称形式 のファイルで、その中にsys.pathに追加する項目(1行に1項目)があります。 存在しない項目は決してsys.pathには追加されません。しかし、 そのアイテムが(ファイルではなく)ディレクトリを参照しているかどうかのチェック はなされません。一度追加された項目はそれ以上sys.pathに追加されること はありません。空行や#から始まる行は、スキップされます。   

例えば、sys.prefixとsys.exec_prefixが、"/usr/local"にセットされていると仮定します。パイソン1.5.1のライブラリは、"/usr/local/lib/python1.5"にインストールされます(sys.versionの最初の3文字がパス名に使われます)。ここに3つのサブディレクトリ("foo"、"bar"、"spam")と、2つのパスコンフィグレーションファイル("foo.pth"、"bar.pth")を持つサブディレクトリ"/usr/local/lib/python1.5/site-packages"があると仮定します。 "foo.pth"が以下のように定義されていると仮定します。

# foo パッケージコンフィグレーション

foo
bar
bletch

そして、"bar.pth"が以下のように定義されていると仮定します。

# bar パッケージコンフィグレーション

bar

すると、次のようなディレクトリがこの順番でsys.pathに追加されます。

/usr/local/lib/python1.5/site-packages/bar
/usr/local/lib/python1.5/site-packages/foo

"bletch"は存在しないので、省略されます。"bar.pth"は"foo.pth"よりアルファベット順で前にくるので、"bar"ディレクトリは"foo"ディレクトリより優先されます。そして"spam"は、どのパスコンフィグレ−ションファイルにも定義されていないので省略されます。

これらのパス操作の後で、任意のサイト特有のカスタマイズを行う、sitecustomize モジュールのインポートが行われます。もしImportError例外が発生してインポートできなかった場合は無視されます。

Unixでないシステムでは、sys.prefixsys.exec_prefixは空であることに注意して下さい。パス操作はスキップされます。しかし、sitecustomize モジュールのインポートは試みられます。

guido@python.org