我很好奇是否可以访问其他模块导入到的父模块的名称。
例如,如果我有一个模块(moduleA),而父模块是模块,foo.py则将其导入到该模块中,是否有可能moduleA知道其foo位置?
def print_parent_module():
os.path.asbpath(#somehow access filename of parent module)
Run Code Online (Sandbox Code Playgroud)
import moduleA
print moduleA.print_parent_module()
>>> "foo.py"
Run Code Online (Sandbox Code Playgroud)
小智 7
我遇到了类似的问题。您可以利用__name__:
parent_name = '.'.join(__name__.split('.')[:-1])
Run Code Online (Sandbox Code Playgroud)
或者,如果您尝试直接访问模块(不是OP的问题,而是相关的),请参阅Is there a way to accessparent module in Python中我的答案
不会。导入的模块不保存任何形式的状态来存储与其导入方式相关的数据。
我认为更好的问题是,你为什么要这样做?您知道如果foo.py确实是您的那么您可以轻松地从中获取__main__名称(通过使用 sys.argv)?foo.py如果是导入的模块,那么您显然在导入它时foo.py已经知道其名称及其位置等。foo.py