このモジュールは初期化中に自動的にインポートされます。
自動インポートはインタプリタの -S オプションで禁止できます。
このとき site パッケージの自動インポートが無効となります。
このモジュールをインポートすることで、システム(サイト)固有のライブラリのパス(ライブラリパス)をモジュール検索パスへ付け加えます。
システム(サイト)固有のライブラリのパスには、システムレベルのものとユーザーレベルのものがある。
● サイト固有のライブラリ
凡用的に多くの場合に必要となるであろう標準ライブラリとは別の、あるシステム(サイト)に固有のライブラリ。
● インタプリンタを起動する際のライブラリ探索パス
[
(カレントディレクトリ),
標準ライブラリのzip,
標準ライブラリのパス,
プラットフォーム依存標準ライブラリパス,
プラットフォーム依存シェアードライブラリパス
]
user site-packages(ディレクトリ)
まず、site モジュールによってユーザーレベルのシステム(サイト)固有のライブラリのパスが追加されます。
- user site-packages を使えば site-packages にアクセス権がないユーザ (環境標準の Python を使っているならすべての非rootユーザ) もsite-packages にモジュールが簡単にインストールできる。
ユーザ毎のモジュールを保存することができる。 - user site-packages がモジュールの探索パス (sys.path) に追加された後、usercustomize.py というモジュールが暗黙的に Python に import しようと試みる。
import に失敗した場合は、無視して先に進む。 - user site-packages のパスは、 site.UER_SITE で参照できる。
usercustomizeモジュール
site モジュールによって提供される機能の一つで、Python 起動時に任意のコードを実行することができます。
usercustomize.py ユーザー固有の設定を行う仕組みのため、普通はユーザーが作らないといけないのでsitecustomize.py に比べ、モジュールの検索順序を気にすることなく設定を書くことができます。
挙 動
以下の内容で usercustomize.py という名前で C:\\Python33 に保存し、同じディレクトリに hoge.py ファイルを保存し、hoge.py 上で起動します。
def sam():
print('usercustomize')
sam()
def hoge():
print('hoge')
hoge()
▼実行結果
usercustomize
hoge
同じディレクトリ上のファイルでは、どのファイルを起動しても最初に「usercustomize」を表示します。
sys.path に登録されているディレクトリ上ならば実行南可能。
この挙動はモジュールの検索順によるもの。
検索順は、sys.path を見れば確認できる。
つまり、sys.path が以下の表示の場合、
['', 'C:\\Python33\\lib\\site-packages\\distribute-0.6.49-py3.3.egg', 'C:\\Pytho
n33', 'C:\\windows\\system32\\python33.zip', 'C:\\Python33\\DLLs', 'C:\\Python33
\\lib', 'C:\\Python33\\lib\\site-packages']
「C:\\Python33\\lib\\site-packages\\distribute-0.6.49-py3.3.egg」ディレクトリと
「C:\\Python33」ディレクトリに usercustomize.py を置いた場合、
「C:\\Python33\\lib\\site-packages\\distribute-0.6.49-py3.3.egg」ディレクトリの
usercustomize.py のコードが実行されます。
※)site モジュールには同様のことを行う sitecustomize という機能がある。
site-packages(ディレクトリ)
次に、site モジュールによってシステムレベルのシステム(サイト)固有のライブラリのパスが追加されます。
- Python には site-packages というディレクトリが存在し、そのサイト (マシン環境) 固有のモジュールは site-packages に保存されるようになっている。
- site-packages がモジュールの探索パス (sys.path) に足された後、sitecustomize.py というモジュールが暗黙的に Python に import しようと試みる。
import に失敗した場合は、無視して先に進む。
sitecustomize.py にサイト固有の設定を書いておくことができる。
sys.setdefaultencoding(‘utf-8’) でエンコーディングを設定するのによく使われる。 - sitecustomize.py は sys.path が通っているディレクトリならどこにおいてもよいけど、site-packages に置くのが自然である。
ユーザーレベル、システムレベルの固有ライブラリのパスを設定した時点で、同パスに拡張子「.pth」のファイルがあった場合は、「.pth」ファイルに記載された内容に従って以下のように処理を行う。
- importで始まる行は、実行。
- テキストだけの行は、テキストと同名のディレクトリが同じ階層にあればsys.path の末尾に追加。
- python インタプリンタの起動時に「-sオプション」を指定すると site モジュールが自動インポートされないため、ユーザーレベル/システムレベルともにサイト固有ライブラリの設定が行われない。
sitecustomizeモジュール
基本的な挙動はusercustomizeモジュールと同じ。
sitecustomize は usercustomize と異なりシステム全体の設定をカスタマイズする目的に使われる。
そのため環境によっては、すでに(自動的に)優先順位の高いパスにファイルが配置されていることがある。
usercustomizeよりも前に呼び出される。