我正在尝试在已导入其某些依赖项的特定环境中执行某些代码,但我一直收到错误消息,指出无法找到该模块。我打开了一个调试器,我在全局环境中看到了模块,但是当我尝试使用普通的作用域方法访问模块时,python似乎无法找到它。
(Pdb) globals['my_import']
<module 'tmp0fZtOs' from '/tmp/tmp0fZtOs.py'>
(Pdb) my_import
*** NameError: name 'my_import' is not defined
我还发现一些文档提到全局变量需要显式引用才能使它们可用于函数,但是当我尝试类似下面的内容时,我也会收到错误。
(Pdb) def temp_function(): global my_import; print my_import
(Pdb) temp_function()
*** NameError: global name 'my_import' is not defined
为了使我的exec代码可以使用该模块,我可以做些什么?
答案 0 :(得分:-1)
您声明my_import
是全局的,但您没有为其分配值,因此它不存在。
def temp_function():
global my_import
my_import = 1
print(my_import)
temp_function()
if "my_import" in globals().keys():
print("Variable is global")
print(globals()['my_import'])