更具体地说,我有一个文件
file file1.py:
if __name__ == '__main__':
a = 1
从文件file2.py,我想做类似
的事情import file1
print file1.a
不修改file1.py
答案 0 :(得分:4)
import imp
m = imp.find_module('file1')
file1 = imp.load_module('__main__', *m)
话虽如此,你应该考虑修改file1.py
而不是使用这个黑客。
答案 1 :(得分:4)
from runpy import run_module
data = run_module("file1", run_name="__main__")
print data["a"]
你不需要乱用导入内部来做这样的事情(作为一个额外的好处,你将避免阻止访问你的真正的 __main__
模块命名空间)
答案 2 :(得分:3)
你不能;这首先是主要哨兵的目的。如果在主要哨兵中定义的变量在它之外是有用的,那么它们应该在它之外被定义为开始。
答案 3 :(得分:0)
您需要在a
范围之外声明if __name__ == '__main__'
。现在,它只存在于if
块的范围内。
a = 0
if __name__ == '__main__':
a = 1