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'
ファイル名をゲットできました:->
他にも色々と便利なことができるので、試してみて下さい!
参考:http://www.python.jp/doc/2.4/lib/module-inspect.html