28.14。 サイト —サイト固有の構成フック
ソースコード: :source: `Lib / site.py`
このモジュールは初期化中に自動的にインポートされます。インタープリターの -S オプションを使用すると、自動インポートを抑制できます。
このモジュールをインポートすると、サイト固有のパスがモジュール検索パスに追加され、いくつかのビルトインが追加されます。
それは、頭と尾の部分から最大4つのディレクトリを構築することから始まります。 ヘッド部分はsys.prefix
とsys.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.prefix
とsys.exec_prefix
が/usr/local
に設定されているとします。 次に、PythonXYライブラリが/usr/local/lib/pythonX.Y
にインストールされます。 これにサブディレクトリ/usr/local/lib/pythonX.Y/site-packages
があり、3つのサブディレクトリfoo
、bar
、spam
、および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.prefix
とsys.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より大きい値。