我有两个包:
my_tools
,包含函数f()
my_project
以my_tools
作为依赖关系且使用其f()
函数我的问题是,当我从f()
软件包的代码中调用my_project
时,我需要f()
才能找到它已从my_project
软件包中调用(并且实例返回包的名称)。
例如:
# my_project/code.py
from my_tools import f
print f() # prints 'my_project'
我一直在玩sys
和inspect
但到目前为止找不到任何解决方案。
答案 0 :(得分:2)
使用inspect.currentframe
获取帧信息,然后检查模块的__package__
属性:
import inspect
def f():
frame = inspect.currentframe()
return frame.f_back.f_globals.get('__package__')