В контексте сложного приложения мне нужно импортировать пользовательские "скрипты". В идеале, скрипт должен иметь
def init():
blah
def execute():
more blah
def cleanup():
yadda
поэтому я просто
import imp
fname, path, desc = imp.find_module(userscript)
foo = imp.load_module(userscript, fname, path, desc)
foo.init()
Однако, как мы все знаем, пользовательский скрипт выполняется, как только выполняется load_module
.
Это значит, что скрипт может быть примерно таким:
def init():
blah
yadda
уступая части yadda
, которая будет вызвана, как только я импортирую
скрипт.
Что мне нужно, так это способ:
Обычно я бы заставил использовать тот же старый трюк if __name__ == '__main__'
, но у меня мало контроля над пользовательским скриптом, поэтому я ищу относительно безболезненное решение. Я видел всевозможные сложные трюки, включая разбор скрипта, но ничего действительно простого. Я удивлен, что этого не существует... или, может быть, я чего-то не понимаю.
Спасибо.