Импорт трассировки Python

Моя библиотека Python только что изменила это основное имя модуля с foo.bar на foobar . Для обратной совместимости foo.bar все еще существует, но при импорте возникает несколько предупреждений. Теперь кажется, что пример программы по-прежнему импортируется из старого модуля, но не напрямую.

Я бы хотел найти ошибочный оператор import . Есть ли какой-либо инструмент, который позволяет мне отслеживать импорт и находить виновника без прошивки через весь код?

2 Solutions collect form web for “Импорт трассировки Python”

Запустите интерпретатор python с помощью -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 ... 

Затем просто grep для вашего старого модуля.

отредактируйте модуль foo.bar, добавьте следующий код:

 import pdb pdb.set_trace() 

когда импортируется foo.bar, программа останавливается на pdb.set_trace () в режиме pdb, где вы можете отлаживать свой код. Например, вы можете использовать команду «w» для печати полного стека вызовов.

  • Многопроцессорство на разрыве Windows
  • Python: получение трассировки из многопроцессорной обработки.
  • Python: как отформатировать объекты трассировки
  • Как создать объект трассировки
  • Как я могу регистрировать текущую строку и информацию о стеке с помощью Python?
  • Python - лучший язык программирования в мире.