我们怎样才能改变当前的__main__

时间:2018-03-21 16:00:12

标签: python python-3.x main contextmanager

假设我们执行script_1。因此,script_1__main__。但是,script_1会从script_2导入一些类。有没有办法,当我们输入script_2来保存旧的__main__上下文时,将script_2设为新__main__,然后再返回script_1,还原旧的背景?

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!