Да, вы можете сделать это, "дойдя до конца" через стек вызовов функций одного уровня, чтобы получить доступ к глобальным переменным вызывающей функции, хранящимся в атрибуте f_globals
фрейма. Вот что я имею в виду:
# The main script.
import module_A
module_A.func()
# module_A.py
import module_B
def func():
module_B.func()
# module_B.py
import sys
def func():
namespace = sys._getframe(1).f_globals # caller's globals
print(f'module_B.func() was called from {namespace["__name__"]}')
Вывод из запуска основного сценария:
module_B.func() was called from module_A
Я хотел бы добавить, что это это довольно хакерская вещь, поэтому вы можете подумать дважды, прежде чем делать это в рабочем коде.