You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python无法导入dns.resolver模块求助:Ubuntu16.04下DNS查询脚本报错

解决Python DNS查询脚本的ImportError问题

看起来你在写DNS查询脚本时踩了两个常见的坑,咱们来逐个解决:

1. 脚本文件名与第三方库重名,导致循环导入

你的脚本命名为dns.py,这刚好和你要导入的dns库同名了!Python在导入模块时,会先在当前工作目录查找对应的文件,所以当你执行import dns.resolver时,它会把你自己的dns.py当作模块导入,进而陷入循环导入的死胡同,直接抛出ImportError。

解决办法:

  • 立刻把你的脚本重命名成别的名字,比如dns_lookup.py或者domain_query.py,避开和库名重复的坑。

2. 可能未安装dnspython库

就算解决了文件名的问题,如果你还没安装dns.resolver所属的dnspython库,还是会报错。在Ubuntu 16.04 + Python3.5的环境下,你可以用下面两种方式安装:

# 用apt包管理器安装
sudo apt-get install python3-dnspython

# 或者用pip3安装(如果你的pip3指向Python3.5)
pip3 install dnspython

修正后的脚本示例

这里给你调整了脚本,加上了异常处理让它更健壮,同时规范了记录类型的写法:

#!/usr/bin/python3
import dns.resolver

try:
    # 记录类型建议用大写'A',符合DNS规范
    query_result = dns.resolver.query('padaru.de', 'A')
    print(f"域名padaru.de的A记录如下:")
    for record in query_result:
        print(f"- {record.address}")
except dns.resolver.NXDOMAIN:
    print("错误:该域名不存在")
except dns.resolver.NoAnswer:
    print("错误:该域名没有配置A记录")
except Exception as e:
    print(f"查询出错:{str(e)}")

内容的提问来源于stack exchange,提问作者NETFLOX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:57:41