Netaddr returns NameError 而不是 ImportError
Netaddr returns NameError instead of ImportError
netaddr python 模块跳过 ImportError。我必须创建一个函数来使用 try/finally 来捕获 ImportError,然后将 try/except 重做为 return 打印值。想知道是否有更简单的方法来捕捉 ImportError?
import json
import base64
try:
netaddr_mod()
except:
print("ImportError: pip install netaddr")
def netaddr_mod():
try:
import netaddr
finally:
import netaddr
我在全局变量中看到了一些其他修复,但与此导入修复没有任何相似之处。找到一个更简单的方法来解决这个问题会很棒,但这种方法现在可以工作。
在 Python 中,函数在 def
语句定义之前不存在。因此,如果您在定义它之前调用它,您将得到 NameError
.
因此,在尝试调用它之前netaddr_mod()
定义。否则代码的第 4 行将引发 NameError
。消息 说 它是一个 ImportError
但您的代码实际上并没有检查异常是什么。如果你这样修改代码:
try:
netaddr_mod()
except:
print("ImportError: pip install netaddr")
raise
你会得到
ImportError: pip install netaddr
Traceback (most recent call last):
File "<pyshell#50>", line 2, in <module>
netaddr_mod()
NameError: name 'netaddr_mod' is not defined
在这里您会看到有关您认为是的 ImportError
的消息,然后是告诉您真正的异常是什么的回溯。
道德: 不要使用裸异常,因为它们掩盖或误报了代码的其他问题。如果您试图捕获导入错误,请执行显式 except ImportError:
。然后,如果你得到一个不同的异常,你至少会知道它是什么。
netaddr python 模块跳过 ImportError。我必须创建一个函数来使用 try/finally 来捕获 ImportError,然后将 try/except 重做为 return 打印值。想知道是否有更简单的方法来捕捉 ImportError?
import json
import base64
try:
netaddr_mod()
except:
print("ImportError: pip install netaddr")
def netaddr_mod():
try:
import netaddr
finally:
import netaddr
我在全局变量中看到了一些其他修复,但与此导入修复没有任何相似之处。找到一个更简单的方法来解决这个问题会很棒,但这种方法现在可以工作。
在 Python 中,函数在 def
语句定义之前不存在。因此,如果您在定义它之前调用它,您将得到 NameError
.
因此,在尝试调用它之前netaddr_mod()
定义。否则代码的第 4 行将引发 NameError
。消息 说 它是一个 ImportError
但您的代码实际上并没有检查异常是什么。如果你这样修改代码:
try:
netaddr_mod()
except:
print("ImportError: pip install netaddr")
raise
你会得到
ImportError: pip install netaddr
Traceback (most recent call last):
File "<pyshell#50>", line 2, in <module>
netaddr_mod()
NameError: name 'netaddr_mod' is not defined
在这里您会看到有关您认为是的 ImportError
的消息,然后是告诉您真正的异常是什么的回溯。
道德: 不要使用裸异常,因为它们掩盖或误报了代码的其他问题。如果您试图捕获导入错误,请执行显式 except ImportError:
。然后,如果你得到一个不同的异常,你至少会知道它是什么。