我知道很多这些问题都存在,但我似乎无法找到适合我遇到问题的问题。
我有以下内容:
def function():
try:
# function to create a table on hbase
except AlreadyExists, ae:
print "WARN: " + ae.message
当我从另一个python脚本调用它时它给了我
NameError: global name 'AlreadyExists' is not defined
...但是如果我删除def function()
并自行运行它,它就会起作用,并且不会抱怨全局名称。
我尝试放global AlreadyExists
但这不起作用。我也看了这个similar problem,但我不确定如何应用它,因为它可以独立工作(没有我必须导入任何特定的东西,但只要我将它包装在一个函数中就失败了。)< / p>
有什么建议吗?
答案 0 :(得分:2)
Python仅在抛出异常时尝试访问该名称。当您在函数外部运行代码时,它可能没有抛出异常,这就是您认为它有效的原因。
您需要从任何位置导入AlreadyExists异常。
答案 1 :(得分:1)
更改
from hbase import ttypes
...
except AlreadyExists, ae:
到
except ttypes.AlreadyExists, ae:
http://www.ros.org/doc/api/hbase/html/classhbase_1_1ttypes_1_1AlreadyExists.html