[英]How to make __name__ == '__main__' when running module
更具体地说,我有一个文件
文件file1.py:
if __name__ == '__main__':
a = 1
从文件file2.py,我想做类似的事情
import file1
print file1.a
无需修改 file1.py
import imp
m = imp.find_module('file1')
file1 = imp.load_module('__main__', *m)
话虽如此,您应该真正考虑修改file1.py
而不是使用此 hack。
from runpy import run_module
data = run_module("file1", run_name="__main__")
print data["a"]
您不再需要弄乱导入内部来做这样的事情(并且作为额外的好处,您将避免阻止访问您的真实__main__
模块名称空间)
你不能; 这首先是主要哨兵的目的。 如果在主标记中定义的变量在它之外是有用的,那么它们应该首先在它之外定义。
您需要在if __name__ == '__main__'
scope 之外声明a
。 目前,它只存在于该if
块的 scope 中。
a = 0
if __name__ == '__main__':
a = 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.