Как получить имя модуля, который пытается импортировать текущий модуль (первый импорт модуля) в python 3.x? - PullRequest
0 голосов
/ 10 октября 2019

Для примера: есть 2 файла
a.py

import b
...

b.py

print('???')  # here I want to figure out which module called me
# this module could be imported from different modules/places not even from expected places.
# there is no certain purpose to use such information, just try to find out is it possible.

Вопрос:

Возможно ливыяснить имя модуля, который делает импорт fisrt на другом модуле?

PS:

Импортировать патч как здесь не вариант. b.py можно импортировать в сторонние модули отдельно.

1 Ответ

0 голосов
/ 10 октября 2019

Добавьте приведенный ниже код в файл b.py, после чего вы получите имя импортируемого файла b.

import sys, os

def getCalledModuleName():
    try:
        sFile = os.path.abspath(sys.modules['__main__'].__file__)
        names = sFile.split('\\')
        length = len(names)
        name = names[length-1]

    except:
        sFile = sys.executable
        names = sFile.split('\\')
        length = len(names)
        name = names[length - 1]
    return name


if __name__=='__main__':
    print('Main Function Called')
else:
    print('Imported as Module')
    print(getCalledModuleName())
...