我有一个python函数,它将导入的模块作为参数:
def printModule(module):
print("That module is named '%s'" % magic(module))
import foo.bar.baz
printModule(foo.bar.baz)
我想要的是能够从传递的模块引用中提取模块名称(在本例中为foo.bar.baz
)。在上面的示例中,magic()
函数是我想要的函数的替身。
__name__
通常会起作用,但这需要在传递的模块的上下文中执行,并且我试图仅从对模块的引用中提取此信息。
这里的正确程序是什么?
我所能想到的只是做(我试过这两个,实际上都没有。模块显然可以在string(module)
,然后是一些文本黑客,或者试图将一个函数注入模块,然后我可以调用它返回__name__
,并且这些解决方案都不优雅。string()
表示中置换它们的名字,并将一个函数注入模块然后调用它只返回来电者的背景。)
答案 0 :(得分:1)
__name__
属性似乎有效:
def magic(m):
return m.__name__
答案 1 :(得分:-1)
如果您有一个包含模块名称的字符串,则可以使用pkgutil。
import pkgutil
pkg = pkgutil.get_loader(module_name)
print pkg.fullname
从模块本身
import pkgutil
pkg = pkgutil.get_loader(module.__name__)
print pkg.fullname