假设我们执行script_1
。因此,script_1
是__main__
。但是,script_1
会从script_2
导入一些类。有没有办法,当我们输入script_2
来保存旧的__main__
上下文时,将script_2
设为新__main__
,然后再返回script_1
,还原旧的背景?
答案 0 :(得分:3)
重要提示:我同意这些意见。您需要这样做是非常可疑的
对于这项运动,这里有一种方法可以使用importlib
:
script_2.py:
if __name__ == '__main__':
print('script_2 is the main!')
script_1.py:
import importlib.util
spec = importlib.util.spec_from_file_location('__main__', 'script_2.py')
mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod)
if __name__ == '__main__':
print('script_3 is the main!')
最后
python script_1.py
> script_2 is the main!
> script_1 is the main!