Trace Python imports Trace Python imports python python

Trace Python imports


Start the python interpreter with -v:

$ python -v -m /usr/lib/python2.6/timeit.py# installing zipimport hookimport zipimport # builtin# installed zipimport hook# /usr/lib/python2.6/site.pyc matches /usr/lib/python2.6/site.pyimport site # precompiled from /usr/lib/python2.6/site.pyc# /usr/lib/python2.6/os.pyc matches /usr/lib/python2.6/os.pyimport os # precompiled from /usr/lib/python2.6/os.pycimport errno # builtinimport posix # builtin# /usr/lib/python2.6/posixpath.pyc matches /usr/lib/python2.6/posixpath.pyimport posixpath # precompiled from /usr/lib/python2.6/posixpath.pyc# /usr/lib/python2.6/stat.pyc matches /usr/lib/python2.6/stat.pyimport stat # precompiled from /usr/lib/python2.6/stat.pyc# /usr/lib/python2.6/genericpath.pyc matches /usr/lib/python2.6/genericpath.pyimport genericpath # precompiled from /usr/lib/python2.6/genericpath.pyc# /usr/lib/python2.6/warnings.pyc matches /usr/lib/python2.6/warnings.pyimport warnings # precompiled from /usr/lib/python2.6/warnings.pyc# /usr/lib/python2.6/linecache.pyc matches /usr/lib/python2.6/linecache.pyimport linecache # precompiled from /usr/lib/python2.6/linecache.pyc# /usr/lib/python2.6/types.pyc matches /usr/lib/python2.6/types.pyimport types # precompiled from /usr/lib/python2.6/types.pyc# /usr/lib/python2.6/UserDict.pyc matches /usr/lib/python2.6/UserDict.py...

Then just grep for your old module.


edit foo.bar module, add following code:

import pdbpdb.set_trace()

when foo.bar be imported, program will stop at pdb.set_trace() in pdb mode, where you can debug your code. For example, you can use "w" command to print the full calling stack.