Hatena::ブログ(Diary)

bokuju とか tabe1hands の日記 このページをアンテナに追加 RSSフィード

2008-10-16 pythonのinspect で モジュールが定義されているファイル名 をゲット

[]pythonのinspect で モジュールが定義されているファイル名 をゲットする!

python の標準ライブラリに inspect という便利なものがあるので使ってみた。

では、やってみます。


デバッガpdbプログラムを読み込み、調査するモジュールの import 部分まで進めます。

$ /opt/local/lib/python2.5/pdb.py /Library/Python/2.5/site-packages/ipython-0.9.1-py2.5.egg/IPython/rlineimpl.py
> /Library/Python/2.5/site-packages/ipython-0.9.1-py2.5.egg/IPython/rlineimpl.py(9)<module>()
-> $Id: Magic.py 1096 2006-01-28 20:08:02Z vivainio $"""
(Pdb) n
> /Library/Python/2.5/site-packages/ipython-0.9.1-py2.5.egg/IPython/rlineimpl.py(11)<module>()
-> import sys
(Pdb) n
> /Library/Python/2.5/site-packages/ipython-0.9.1-py2.5.egg/IPython/rlineimpl.py(13)<module>()
-> try:
(Pdb) n
> /Library/Python/2.5/site-packages/ipython-0.9.1-py2.5.egg/IPython/rlineimpl.py(14)<module>()
-> from readline import *
(Pdb) n
> /Library/Python/2.5/site-packages/ipython-0.9.1-py2.5.egg/IPython/rlineimpl.py(15)<module>()
-> import readline as _rl
(Pdb) n
> /Library/Python/2.5/site-packages/ipython-0.9.1-py2.5.egg/IPython/rlineimpl.py(16)<module>()
-> have_readline = True

inspect モジュールを読み込んで、 inspect.getfile(オブジェクト名) を叩きます。

(Pdb) import inspect
(Pdb) inspect.getfile(_rl)
'/Library/Python/2.5/site-packages/readline-2.5.1-py2.5-macosx-10.5-i386.egg/readline.so'

ファイル名をゲットできました:->

他にも色々と便利なことができるので、試してみて下さい!

参考:3.11 inspect -- 使用中オブジェクトの情報を取得する

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/bokuju/20081016/1224173391