Как я могу получить ссылку на модуль из этого модуля? Кроме того, как я могу получить ссылку на пакет, содержащий этот модуль?
Как я могу получить ссылку на модуль из этого модуля? Кроме того, как я могу получить ссылку на пакет, содержащий этот модуль?
Ответы:
import sys
current_module = sys.modules[__name__]
Еще один метод, который не импортирует модуль sys и, возможно, зависит от вашего вкуса - проще:
current_module = __import__(__name__)
Имейте в виду, что нет импорта. Python импортирует каждый модуль только один раз.
Если у вас есть класс в этом модуле, то __module__свойство класса - это имя модуля класса. Таким образом, вы можете получить доступ к модулю через sys.modules[klass.__module__]. Это также работает для функций.
__module__свойство является не модулем, а строкой; таким образом, происходит inspect.getabsfile(func.__module__)сбой с " TypeError: 'os' не является объектом модуля, класса, метода, функции, traceback, frame или code "; пока inspect.getabsfile(sys.modules[o.__module__])что проходит.
Вы можете получить название текущего модуля, используя __name__
Ссылка на модуль находится в sys.modulesсловаре.
Смотрите документацию по Python
Вы можете передать его снаружи:
mymod.init(mymod)
Не идеально, но это работает для моего текущего варианта использования.