问题描述
如何在模块级别获得 Python 中模块的完全限定名称?
例如,假设这是文件结构:
foo
├── setup.py
└── bar
└── baz
└── spam.py
如何从模块级别的 spam.py
文件中获取完全限定的模块名称 "bar.baz.spam"
?
有__file__
,可以与inspect.getmodulename(__file__)
配对得到模块名称"spam"
。但是,我怎样才能把它变成 "bar.baz.spam"
?
解决方法
尝试这样的事情:
from bar.baz import spam
print(spam.__name__)
如果被导入的名称不是模块,你可以像这样获取模块名称和对象名称:
from bar.baz.spam import MyClass
print(MyClass.__module__,MyClass.__name__)