【发布时间】:2015-12-11 16:03:12
【问题描述】:
我正在尝试在特定环境中执行一些代码,在该环境中我导入了一些依赖项,但我不断收到错误消息,提示找不到模块。我打开了一个调试器,在全局环境中看到了该模块,但是当我尝试使用普通的作用域方法访问该模块时,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
关于我可以做些什么来使这个模块可用于我的执行代码的任何想法?
【问题讨论】:
-
你能发一个minimal reproducible example吗?
-
globals['my_import']?你是说globals()['my_import']吗? -
我使用 globals['my_import'] 因为 globals 是一个字典。如果我尝试使用 globals()['my_import'],我会收到一条错误消息,指出字典不可调用。
-
globals是一个返回字典的内置函数。globals()[variable_name]应该给你变量variable_name。也就是说,直到您创建自己的名为globals的变量,从而隐藏内置的globals。看起来你在这里做了。这似乎是你的问题开始的地方,但你没有发布你的那部分代码...... -
不管
globals是什么东西,它既不是 Python 内置的,也不是这段代码的实际全局变量 dict。
标签: python scope global-variables