导入错误:没有名为dns.query的模块

6 投票
1 回答
10930 浏览
提问于 2025-04-17 18:05

我正在尝试在Windows上运行一段Python代码,这段代码包含以下几行:

from scapy import *
import random
import socket
import dns.query

但是当我从命令行编译它时,出现了以下错误:

C:\Python25 > attack.py
Traceback <most recent call last>:
File "C:\Python25\attack.py", line 4 , in <module>
import dns.query
ImportError: No module named dns.query

这可能是什么错误呢?我该怎么解决这个问题?是因为路径的问题,还是因为dns.query模块没有编译成功?

1 个回答

11

这意味着你还没有安装 dnspython。

安装 dnspython 有两种方法:

1. 好的方法:

安装任何模块,最简单的方法是先安装 setuptools。setuptools 有点像 Ubuntu 系统中的 "apt-get",你只需要输入 "easy_install ",它就会帮你下载并安装所需的模块。要安装 setuptools,可以从 https://pypi.python.org/pypi/setuptools 下载源文件。

下载后解压缩,解压后的文件夹里会有一个 setup.py 文件。接下来运行:

python setup.py install

这会在你的系统中安装 setuptools。

安装完成后,你可以在 c:\python2x\Scripts\ 目录下找到一个可执行文件 easy_install.exe(2x 是 Python 的版本号,比如 26、27 等)。

现在要安装 dnspython,只需运行:

c:\python2x\Scripts\easy_install.exe dnspython

这样应该就能解决你的问题,之后你的脚本就可以正常运行了。

你还可以把 c:\python2x\Scripts 加入到 Windows 的 PATH 中,这样每次安装模块时就不需要输入完整路径了。

2. 不好的方法:

虽然这种方法可能会失败,如果 dnspython 依赖的一些模块没有安装的话。

你可以从 http://www.dnspython.org/kits/1.10.0/ 下载 dnspython 的源文件并解压缩。然后进入解压后的文件夹,运行:

python setup.py install

撰写回答