Python -получить полное имя модуля пакета

Для подробных отладочных сообщений в моем приложении я использую функцию, которая возвращает полезный префикс. Рассмотрим следующий пример:

import inspect

def get_verbose_prefix():
    """Returns an informative prefix for verbose debug output messages"""
    s = inspect.stack()
    module_name = inspect.getmodulename(s[1][1])
    func_name = s[1][3]

    return '%s->%s' % (module_name, func_name)

def awesome_function_name():
    print "%s: Doing some awesome stuff right here" % get_verbose_prefix()

if __name__ == '__main__':
    awesome_function_name()

Это выводит:

test->awesome_function_name: Doing some awesome stuff right here

Моя проблема:Когда у меня есть модуль в пакете, например, «myproject.utilities.input», имя модуля, возвращаемое из get_verbose_prefix, по-прежнему остается просто «input», а не «myproject.utilities.input». Это резко снижает полезность префикса в больших проектах, когда может быть несколько «входных» модулей в разных подмодулях, работающих вместе.

Итак, мой вопрос:Есть ли простой способ получить полное имя модуля в его пакете в Python? Я планирую расширить функцию get_verbose_prefixдля проверки файлов «__init __.py» в родительских каталогах модуля, чтобы экстраполировать его полное имя, но сначала я хотел бы знать, есть ли более простой способ сделать это.

23
задан Hubro 28 July 2012 в 22:22
поделиться