2017-04-06 92 views
3

我有兩個包:,知道從它被稱爲包名稱的功能

  • 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' 

我一直在玩弄sysinspect,但找不到任何解決辦法爲止。

+1

'高清F():返回inspect.currentframe()f_back.f_globals.get( '__ package__',「? ')' – falsetru

+0

返回'my_tools',而不是'my_project';) – Anto

+0

我有'my_project'。檢查['__package__'文檔](https://docs.python.org/3/reference/import.html#__package__) – falsetru

回答

2

使用inspect.currentframe獲得幀信息,然後檢查__package__模塊的屬性:

import inspect 

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