home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

Python/PYTHONPATH, sys.path, "site"モジュール, "site-packages"ディレクトリ

Python/PYTHONPATH, sys.path, "site"モジュール, "site-packages"ディレクトリ

Python / PYTHONPATH, sys.path, "site"モジュール, "site-packages"ディレクトリ
id: 823 所有者: msakamoto-sf    作成日: 2010-11-02 16:50:57
カテゴリ: Python 

Pythonのモジュール検索PATHについてメモ。

  • 基本はsys.pathから。
    • 末尾に追加したい場合は
  • sys.pathを構成する外部要素:
    • PYTHONPATH環境変数
    • "site"モジュールと"-S"コマンドライン引数
    • "site-packages" ディレクトリ直下の".pth"ファイル

公式ドキュメント(2.x系) : http://www.python.org/doc/ 参照
(過去リリースについても http://www.python.org/doc/versions/ から参照可能)

  • "Tutorial" -> "6. Modules" -> "6.1.x The Module Search Path"
    • モジュール検索PATHの基本かつ公式かつ一次ドキュメント
  • "Installing Python Modules" -> "4 Custom Installation" -> "4.1 Modifying Python's Search Path"
    • CGI環境などの都合でモジュール検索PATHをカスタマイズしたい場合の基本プラクティス
  • "Library Reference" -> "Python Runtime Service" -> "site"
    • "site-packages" ディレクトリ以下をsys.pathに追加する"site"モジュールの解説

以下、実例。
環境:

Windows XP SP3 (Japanese), Python 2.5 (from MSI installer)

実例1:"-S"で"site"モジュールを読み込まず、PYTHONPATH環境変数も未設定にする。

> set PYTHONPATH=
> C:\Python25\python.exe -S
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on win32
>>> import sys
>>> sys.path
[
'', 
'C:\\WINDOWS\\system32\\python25.zip', 
'C:\\Python25\\DLLs', 
'C:\\Python25\\lib', 
'C:\\Python25\\lib\\plat-win', 
'C:\\Python25\\lib\\lib-tk', 
'C:\\Python25'
]

実例2:PYTHONPATH環境変数を設定する→デフォルトのsys.pathの先頭に挿入される。

> set PYTHONPATH=C:\path1;C:\path2
> C:\Python25\python.exe -S
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on win32
>>> sys.path
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined
>>> import sys
>>> sys.path
['', 
'C:\\path1', 
'C:\\path2', 
'C:\\WINDOWS\\system32\\python25.zip', 
'C:\\Python25\\DLLs', 
'C:\\Python25\\lib', 
'C:\\Python25\\lib\\plat-win', 
'C:\\Python25\\lib\\lib-tk', 
'C:\\Python25'
]

実例3:"-S"無し=通常起動時は"site-packages"が追加される。

> set PYTHONPATH=
> C:\Python25\python.exe
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
[
'', 
'C:\\WINDOWS\\system32\\python25.zip', 
'C:\\Python25\\DLLs', 
'C:\\Python25\\lib', 
'C:\\Python25\\lib\\plat-win', 
'C:\\Python25\\lib\\lib-tk', 
'C:\\Python25', 
'C:\\Python25\\lib\\site-packages'  ## <<<< added by site.py
]

"site-packages"ディレクトリ直下の".pth"ファイルの取り扱いについては、"site"モジュールの公式ドキュメントあるいはシステムにインストールされているsite.pyのソースコードを参照のこと。

PYTHONPATH環境変数と "site-packages"ディレクトリ直下の".pth"ファイルは無関係。".pth"ファイルは"site"モジュールが処理するファイル。PYTHONPATHはPython処理系(実行ファイル本体)が処理する環境変数。実例で示したように、それぞれ独立してsys.pathにPATHを追加している。

CGI環境を特に考慮している日本語ドキュメント:



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-11-02 16:52:03
md5:9cf7cf51619118c9e598d8573054b495
sha1:4a952382fdb5aa8ea7f45a61ab3eeded5dd84891
コメント
コメントを投稿するにはログインして下さい。