尝试搜索该站点,但找不到我的问题的答案:
假设我有一个名为 mymodule.py 的模块,其中包含:
def a():
return 3
def b():
return 4 + a()
然后以下工作:
import mymodule
print(mymodule.b())
但是,当我尝试动态定义模块内容时:
import imp
my_code = '''
def a():
return 3
def b():
return 4 + a()
'''
mymodule = imp.new_module('mymodule')
exec(my_code, globals(), mymodule.__dict__)
print(mymodule.b())
然后它在函数 b() 中失败:
Traceback (most recent call last):
File "", line 13, in <module>
File "", line 6, in b
NameError: global name 'a' is not defined
我需要一种方法来保留模块中的分层命名空间搜索,除非模块驻留在磁盘上,否则这似乎会失败。
关于有什么区别的任何线索?
谢谢,罗伯。