我目前有代码检查if __name__ == '__main__'
然后调用某些函数(如果是这种情况)。目前,我通过生成另一个python子进程来执行此代码,但将其作为模块导入更清晰。问题是这些模块中没有main
函数正是在__name__ == '__main__'
变化下执行的功能。我真正拥有的唯一选择是在执行模块之前设置__name__
属性。这样做的最佳方式是什么?
答案 0 :(得分:0)
我最终做的是以下内容:
imp_new_module = type(sys)
new_module = imp_new_module(module_name)
new_module.__dict__['__name__'] = '__main__'
exec(open(scriptname).read(), new_module.__dict__)
这类似于importlib内部的功能,但确实跳过了一些属性。
答案 1 :(得分:0)
使用runpy库。
runpy.run_module(module_name, run_name= "__main__")