gpt4 book ai didi

python - Netaddr 返回 NameError 而不是 ImportError

转载 作者:行者123 更新时间:2023-12-03 08:21:58 25 4
gpt4 key购买 nike

netaddr python 模块跳过 ImportError。我必须创建一个函数来使用 try/finally 来捕获 ImportError,然后重做 try/except 以返回打印值。想知道是否有更简单的方法来捕获 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:如果您试图捕获导入错误。然后,如果您遇到不同的异常,您至少会知道它是什么。

关于python - Netaddr 返回 NameError 而不是 ImportError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54398064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com