Python-获取完整包模块nam

2024-05-19 03:23:03 发布

您现在位置: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函数,以检查模块的父目录中是否有'{u in it'.py'文件来推断它的全名,但首先我想知道是否有更简单的方法来实现它。


Tags: 模块函数nameinputverbosegetprefixdef
3条回答

在其包中检索完整模块名称的简单方法:

print(__file__)

尝试使用模块的__name__属性。

__name__始终包含模块的全名。(当然,除了main上的__main__。)

相关问题 更多 >

    热门问题