假设我们执行script_1
.所以,script_1
__main__
.但是,script_1
从script_2
导入一些类。当我们进入script_2
保存旧的__main__
上下文时,有没有办法script_2
新的__main__
,并在回到script_1
之前恢复旧的上下文?
重要提示:我同意这些评论。您需要这样做是非常可疑的
对于这项运动,这里有一种方法可以使用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!