То, что вы пытаетесь сделать, по своей сути невозможно. foo
просто не знает, как вы его импортировали - возможно, он даже был импортирован несколькими различными способами. Пример на моей Linux-коробке:
>>> from os.path import normpath
>>> from posixpath import normpath as normpath2
>>> normpath is normpath2
True
То есть normpath
и normpath2
- это один и тот же функциональный объект. Невозможно определить, каким образом они были импортированы.
Тем не менее, иногда может помочь просмотр атрибута __module__
вашей функции:
>>> normpath.__module__
posixpath
>>> normpath2.__module__
posixpath
Атрибут __module__
не всегда определяется, и если он определен, он не всегда содержит информацию, которую вы ищете.