トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

Pythonでモジュールパスを設定する

http://lightson.dip.jp/zope/ZWiki/210Python_e3_81_ae_e3_83_a9_e3_82_a4_e3_83_96_e3_83_a9_e3_83_aa_e3_83_ad_e3_83_bc_e3_83_80_e3_82_92_e5_88_b6_e5_be_a1_e3_81_99_e3_82_8b

モジュールパスを設定する方法は大きく3つある。

PYTHONPATH環境変数を使う方法

set PYTHONPATH=c:\temp\hoge
export PYTHONPATH=/user/local/hoge

など

プログラム内で動的に設定する

sys.path

sys.path は「検索パス」そのものです。 import 文が実行された時、 Python は sys.path リストの先頭から順番に該当するモジュール・パッケージを探し出します。この sys.path は単なるリストなのでプログラム中で動的に変更できます。また、追加するだけでなく削除することもできます。

他の方法は Python インタプリタ起動時における sys.path の初期化処理を変更するものです。

サンプル

http://www.emptypage.jp/notes/pymods-on-sakura.html

#!/usr/bin/env python
import sys
sys.path.append('/home/foo/lib/python')
import spam

.pth ファイルを使う

.pthについて

.pth という拡張子のファイルを検索パスに入れておくことで、 sys.path の末尾に検索パスを追加しておくことができます。

.pth ファイルは検索パスに含まれていれば問題なく動作はしますが、推奨される置き場所は site-package 下です。自作およびサードパーティ製モジュール・パッケージの推奨置き場と同じ場所です。

ファイル名は拡張子が .pth であれば何でもかまいませんが、読み込ませたい対象のモジュール名との関連が想像できる名前にしておくとよいでしょう。

このファイルには1行に一つずつ、追加したい検索パスを記述します。パスは絶対パスでも相対パスでもかまいません。相対パスを記述した際、基準となるパスは .pth のあるディレクトリになります。

.pth ファイルで追加された検索パスの中にある .pth ファイルも処理の対象となります。

.pth ファイルを読み込んで処理しているのは site モジュールです。このモジュールは通常 Python インタプリタの初期化中に読み込まれるため通常は問題になりません。しかしインタプリタが -S オプション付で呼び出された時には site パッケージの自動インポートが無効となります。結果、 .pth ファイルは読み込まれないこととなります。


インポート可能なモジュールを確認する

>>> import sys
>>> sys.modules
{'copy_reg': <module 'copy_reg' from 'C:\python26\lib\copy_reg.pyc'>, 'sre_compi
le': <module 'sre_compile' from 'C:\python26\lib\sre_compile.pyc'>, 'encodings.c
p932': <module 'encodings.cp932' from 'C:\python26\lib\encodings\cp932.pyc'>,
# 略
}

[カテゴリ: プログラミング言語 > Python]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2013年12月09日 22時10分15秒