我想能够从导入的模块中动态地检索当前执行的模块或类名。这是一些代码:
foo.py:
def f():
print __name__
bar.py:
from foo import f
def b(): f()
这显然不起作用__name__是包含该函数的模块的名称。我想在foo模块中访问的是使用foo的当前执行模块的名称。所以在上面的情况下,它将是bar,但如果任何其他模块导入foo,我希望foo动态地访问该模块的名称。
编辑:检查模块看起来相当有希望,但它不是我正在寻找的。我所希望的是一些可以访问的全局或环境级变量,它将包含当前执行模块的名称。不是我不愿意遍历堆栈来找到这些信息 – 我只是认为Python可能已经暴露了这些数据。
编辑:这是我如何使用这个。我有两个不同的Django应用程序,它们都需要将错误记录到文件中。让我们说他们被称为“AppOne”和“AppTwo”。我也有一个我想要记录这些文件的地方:“/ home / hare / app_logs”。在任何给定点的每个应用程序中,我希望能够导入我的记录器模块,并调用将日志字符串写入文件的日志功能。但是我想做的是在app_logs下创建一个目录,该目录是当前应用程序(“AppOne”或“AppTwo”)的名称,以便每个应用程序的日志文件将进入其各自的日志目录。
为了做到这一点,我认为最好的办法是让记录器模块访问一些表示当前应用程序名称的全局变量,因为它负责了解父记录目录的位置并创建应用程序的记录目录,如果它还不存在。