Trace de las importaciones de Python

Mi biblioteca de Python acaba de cambiar el nombre del módulo principal de foo.bar a foobar . Para la compatibilidad con versiones anteriores, foo.bar todavía existe, pero importarlo genera algunas advertencias. Ahora, parece que algún progtwig de ejemplo todavía importa desde el módulo anterior, pero no directamente.

Me gustaría encontrar la statement de import errónea. ¿Hay alguna herramienta que me permita rastrear las importaciones y encontrar al culpable sin pasar por todo el código?

Related of "Trace de las importaciones de Python"

Inicia el intérprete de python con -v :

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

Entonces sólo grep para su módulo anterior.

modifique el módulo foo.bar, agregue el siguiente código:

 import pdb pdb.set_trace() 

cuando se importa foo.bar, el progtwig se detendrá en pdb.set_trace () en modo pdb, donde puede depurar su código. Por ejemplo, puede usar el comando “w” para imprimir la stack de llamadas completa.