TL; DR:site.addsitedirを呼び出して、.pthファイルを処理します
OS Xについてはよくわかりませんが、PYTHONPATHとサイトパッケージは、sys.pathの拡張に関しては実際には一種の独立しています。
Try this:
set PYTHONPATH somehow (OS dependent)
python -c "import sys; print '\n'.join(sys.path); print sys.exec_prefix; print sys.prefix"
python -S -c "import sys; print '\n'.join(sys.path);print sys.exec_prefix; print sys.prefix"
私のLinuxボックスでは、2回目の実行で-Sスイッチがサイトモジュールのインポートをスキップしたとしても、PYTHONPATHは両方の時間で出力の一部になります。
ここで、site.moduleが行うことは、実際には(sys.exec_prefix、sys.prefix)とOSに依存するプレフィックス(Linuxの場合:lib / python2.7 / dist-packages)の組み合わせを取り、組み合わせのいずれかが既存のディレクトリであるかどうかを確認することです。 、その場合はそれを処理します(含まれている.pthファイルの解析)
コードはsite.pyモジュール--getsitepackages()にあります。
def getsitepackages():
"""Returns a list containing all global site-packages directories
(and possibly site-python).
For each directory present in the global ``PREFIXES``, this function
will find its `site-packages` subdirectory depending on the system
environment, and will return a list of full paths.
"""
sitepackages = []
seen = set()
for prefix in PREFIXES:
if not prefix or prefix in seen:
continue
seen.add(prefix)
if sys.platform in ('os2emx', 'riscos'):
sitepackages.append(os.path.join(prefix, "Lib", "site-packages"))
elif os.sep == '/':
sitepackages.append(os.path.join(prefix, "lib",
"python" + sys.version[:3],
"site-packages"))
sitepackages.append(os.path.join(prefix, "lib", "site-python"))
else:
sitepackages.append(prefix)
sitepackages.append(os.path.join(prefix, "lib", "site-packages"))
(...)
この関数は最終的にリストを返し、そのリストの各要素に対してaddsitedir関数が呼び出されます。この関数には、.pthファイルを機能させるためのロジックがあります。
非常に長い話ですが、.pthファイルを処理するには、エントリレベルのスクリプトでsite.addistedirを呼び出します。また、sitecustomize.pyに含めることを検討することもできます。Pythonディストリビューションにまだ含まれていないことを確認してください。