允许加载imp的模块访问python中的局部变量

时间:2013-12-26 16:41:23

标签: python

我正在尝试使用imp模块在​​python中创建一个动态模块加载系统。我有两个文件x.pyy.py,我想从y.py加载x.py并让y.py能够访问{{1}中声明的变量}}。这有可能吗?

从代码点来看,这就是我所拥有的:

x.py

x.py

y.py

import imp

global_var = 7
imp.load_source( 'y', 'y.py' )
print( global_var )

但我无法从global_var = 3 更新x.py的{​​{1}}。

1 个答案:

答案 0 :(得分:0)

模块xy具有分隔的命名空间。更改y中的模块级变量不会影响x模块的命名空间。

以下方法怎么样?

import imp

global_var = 7
y = imp.load_source('y', 'y.py') # <---
global_var = y.global_var        # <---
print(global_var)

更新对评论的回复。

您可以使用execexecfile(仅限Python 2.x)。 不推荐

global_var = 7
#execfile('y.py')   # Python 2.x
with open('y.py') as f:
    exec(f.read())
print(global_var)