["python","stack-trace","introspection"]
Get __name__ of calling function's module in Python

Suppose myapp/foo.py contains: def info(msg): caller_name = ???? print '[%s] %s' % (caller_name, msg) And myapp/bar.py contains: import foo foo.info('Hello') # => [myapp.bar] Hello I want caller_name to be set to the __name__ attribute of the calling functions' module (which is 'myapp.foo') in this case. How can this be done?
Check out the inspect module: inspect.stack() will return the stack information. Inside a function, inspect.stack()[1] will return your caller's stack. From there, you can get more information about the caller's function name, module, etc. See the docs for details: http://docs.python.org/library/inspect.html Also, Doug Hellmann has a nice writeup of the inspect module in his PyMOTW series: http://pymotw.com/2/inspect/index.html#module-inspect EDIT: Here's some code which does what you want, I think: import inspect def info(msg): frm = inspect.stack()[1] mod = inspect.getmodule(frm[0]) print '[%s] %s' % (mod.__name__, msg)