все Python 3Модули и импортфункция
runpy.run_module()
запуск
Находит модуль по имени через механизм импорта и исполняет его код, возвращая словарь его глобальных имён — так работает python -m.
Синтаксис
runpy.run_module(mod_name, init_globals=None, run_name=None, alter_sys=False)
По умолчанию __name__ равен имени модуля, поэтому блок if __name__ == '__main__' не выполняется — для поведения python -m передают run_name='__main__'. Модуль исполняется заново при каждом вызове и в sys.modules не остаётся. Без alter_sys=True sys.argv[0] и sys.modules['__main__'] не меняются, и запускаемый код видит аргументы вызывающей программы.
Примеры
import runpy, sys
sys.path.insert(0, '.')
with open('tool.py', 'w') as f:
f.write('x = 6 * 7\nif __name__ == "__main__":\n print("main!")\n')
g = runpy.run_module('tool')
print(g['x'], g['__name__']) # → 42 tool
g = runpy.run_module('tool', run_name='__main__') # → main!
print('tool' in sys.modules) # → False
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности