我正在尝试使用imp
模块在python中创建一个动态模块加载系统。我有两个文件x.py
和y.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}}。
答案 0 :(得分:0)
模块x
和y
具有分隔的命名空间。更改y
中的模块级变量不会影响x
模块的命名空间。
以下方法怎么样?
import imp
global_var = 7
y = imp.load_source('y', 'y.py') # <---
global_var = y.global_var # <---
print(global_var)
更新对评论的回复。
您可以使用exec
或execfile
(仅限Python 2.x)。 不推荐:
global_var = 7
#execfile('y.py') # Python 2.x
with open('y.py') as f:
exec(f.read())
print(global_var)