NameError: 在函数中使用try/except时未定义全局名称'AlreadyExists
我知道很多类似的问题已经存在,但我找不到一个能解决我现在遇到的问题。
我有以下代码:
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
,但还是不行。我还看了这个类似的问题,但我不太确定怎么应用,因为它单独运行时没问题(不需要我导入任何特定的东西),但一旦我把它放在一个函数里,就出错了。
有什么建议吗?
2 个回答
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
2
Python 只有在出现错误的时候才会去查找这个名字。当你在函数外面运行代码时,可能没有出现错误,所以你觉得代码是正常工作的。
你需要从相应的地方导入 AlreadyExists 这个错误类型。