一个函数,它知道从中调用它的包的名称

时间:2017-04-06 23:14:53

标签: python python-2.7

我有两个包:

  • my_tools,包含函数f()
  • 的系列工具
  • my_projectmy_tools作为依赖关系且使用其f()函数

我的问题是,当我从f()软件包的代码中调用my_project时,我需要f()才能找到它已从my_project软件包中调用(并且实例返回包的名称)。

例如:

# my_project/code.py
from my_tools import f
print f()  # prints 'my_project'

我一直在玩sysinspect但到目前为止找不到任何解决方案。

1 个答案:

答案 0 :(得分:2)

使用inspect.currentframe获取帧信息,然后检查模块的__package__属性:

import inspect

def f():
    frame = inspect.currentframe()
    return frame.f_back.f_globals.get('__package__')