28.14. site —サイト固有の構成フック—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/library/site
移動先:案内検索

28.14。 サイト —サイト固有の構成フック

ソースコード: :source: `Lib / site.py`



このモジュールは初期化中に自動的にインポートされます。インタープリターの -S オプションを使用すると、自動インポートを抑制できます。

このモジュールをインポートすると、サイト固有のパスがモジュール検索パスに追加され、いくつかのビルトインが追加されます。

それは、頭と尾の部分から最大4つのディレクトリを構築することから始まります。 ヘッド部分はsys.prefixsys.exec_prefixを使用。 空のヘッドはスキップされます。 テール部分には、空の文字列を使用し、次にlib/site-packages(Windowsの場合)またはlib/pythonX.Y/site-packages、次にlib/site-python(UnixおよびMacintoshの場合)を使用します。 個別のヘッドテールの組み合わせごとに、既存のディレクトリを参照しているかどうかを確認し、参照している場合はsys.pathに追加し、新しく追加された構成ファイルのパスも調べます。

パス構成ファイルは、名前がname.pthの形式で、上記の4つのディレクトリのいずれかに存在するファイルです。 その内容は、sys.pathに追加される追加アイテム(1行に1つ)です。 存在しないアイテムがsys.pathに追加されることはなく、アイテムがファイルではなくディレクトリを参照していることは確認されません。 sys.pathに2回以上アイテムが追加されることはありません。 空白行と#で始まる行はスキップされます。 importで始まる行(その後にスペースまたはタブが続く)が実行されます。

バージョン2.6で変更: importキーワードの後にスペースまたはタブが必要になりました。


たとえば、sys.prefixsys.exec_prefix/usr/localに設定されているとします。 次に、PythonXYライブラリが/usr/local/lib/pythonX.Yにインストールされます。 これにサブディレクトリ/usr/local/lib/pythonX.Y/site-packagesがあり、3つのサブディレクトリfoobarspam、および2つのパス構成ファイルfoo.pthと[ X156X] 。 foo.pthに次のものが含まれていると仮定します。

# foo package configuration

foo
bar
bletch

bar.pthには次のものが含まれます。

# bar package configuration

bar

次に、次のバージョン固有のディレクトリがsys.pathにこの順序で追加されます。

/usr/local/lib/pythonX.Y/site-packages/bar
/usr/local/lib/pythonX.Y/site-packages/foo

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

これらのパス操作の後、sitecustomizeという名前のモジュールをインポートしようとします。このモジュールは、任意のサイト固有のカスタマイズを実行できます。 これは通常、システム管理者によってsite-packagesディレクトリに作成されます。 このインポートがImportError例外で失敗した場合、それは黙って無視されます。 Windowsのpythonw.exe(デフォルトでIDLEの開始に使用されます)のように、Pythonが出力ストリームを使用せずに開始された場合、sitecustomizeからの出力の試行は無視されます。 ImportError以外の例外は、プロセスのサイレントでおそらく不可思議な失敗を引き起こします。

この後、 ENABLE_USER_SITE がtrueの場合、usercustomizeという名前のモジュールをインポートしようとします。このモジュールは任意のユーザー固有のカスタマイズを実行できます。 このファイルは、 -s によって無効にされない限り、sys.pathの一部であるユーザーsite-packagesディレクトリ(以下を参照)に作成されることを目的としています。 ImportErrorは黙って無視されます。

一部の非Unixシステムでは、sys.prefixsys.exec_prefixが空であり、パス操作がスキップされることに注意してください。 ただし、sitecustomizeおよびusercustomizeのインポートは引き続き試行されます。

site.PREFIXES

サイトパッケージディレクトリのプレフィックスのリスト。

バージョン2.6の新機能。

site.ENABLE_USER_SITE

ユーザーsite-packagesディレクトリのステータスを示すフラグ。 Trueは、有効になっていてsys.pathに追加されたことを意味します。 Falseは、ユーザーの要求によって無効にされたことを意味します( -s または PYTHONNOUSERSITE を使用)。 Noneは、セキュリティ上の理由(ユーザーまたはグループIDと有効IDの不一致)または管理者によって無効にされたことを意味します。

バージョン2.6の新機能。

site.USER_SITE

ユーザーサイトへのパス-実行中のPythonのパッケージ。 getusersitepackages()がまだ呼び出されていない場合は、Noneにすることができます。 デフォルト値は、UNIXおよび非フレームワークMac OSXビルドの場合は~/.local/lib/pythonX.Y/site-packages、Macフレームワークビルドの場合は~/Library/Python/X.Y/lib/python/site-packages、Windowsの場合は%APPDATA%\Python\PythonXY\site-packagesです。 このディレクトリはサイトディレクトリです。つまり、その中の.pthファイルが処理されます。

バージョン2.6の新機能。

site.USER_BASE

ユーザーsite-packagesのベースディレクトリへのパス。 getuserbase()がまだ呼び出されていない場合は、Noneにすることができます。 デフォルト値は、UNIXおよびMac OSXの非フレームワークビルドの場合は~/.local、Macフレームワークビルドの場合は~/Library/Python/X.Y、Windowsの場合は%APPDATA%\Pythonです。 この値は、スクリプト、データファイル、Pythonモジュールなどのインストールディレクトリを計算するためにDistutilsによって使用されます。 ユーザーインストールスキームの場合。 PYTHONUSERBASE も参照してください。

バージョン2.6の新機能。

site.addsitedir(sitedir, known_paths=None)
sys.pathにディレクトリを追加し、その.pthファイルを処理します。 通常、sitecustomizeまたはusercustomizeで使用されます(上記を参照)。
site.getsitepackages()

すべてのグローバルsite-packagesディレクトリ(および場合によってはsite-python)を含むリストを返します。

バージョン2.7の新機能。

site.getuserbase()

ユーザーベースディレクトリのパス USER_BASE を返します。 まだ初期化されていない場合、この関数は PYTHONUSERBASE を尊重して設定します。

バージョン2.7の新機能。

site.getusersitepackages()

ユーザー固有のサイトパッケージディレクトリ USER_SITE のパスを返します。 まだ初期化されていない場合、この関数は PYTHONNOUSERSITE および USER_BASE を尊重して設定します。

バージョン2.7の新機能。

site モジュールは、コマンドラインからユーザーディレクトリを取得する方法も提供します。

$ python -m site --user-site
/home/user/.local/lib/python2.7/site-packages

引数なしで呼び出された場合、 sys.path の内容が標準出力に出力され、続いて USER_BASE の値とディレクトリが存在するかどうかが出力され、同じことが USER_SITE 、最後に ENABLE_USER_SITE の値。

--user-base
ユーザーベースディレクトリへのパスを出力します。
--user-site
ユーザーsite-packagesディレクトリへのパスを出力します。

両方のオプションを指定すると、ユーザーベースとユーザーサイトが os.pathsep で区切られて(常にこの順序で)印刷されます。

オプションを指定すると、スクリプトは次のいずれかの値で終了します。ユーザーのsite-packagesディレクトリが有効になっている場合は0、ユーザーによって無効にされている場合は1、 [ X175X]セキュリティ上の理由または管理者によって無効にされている場合。エラーがある場合は2より大きい値。

も参照してください

PEP 370 –ユーザーごとのサイト-パッケージディレクトリ