ImportError:没有名为dns.exception的模块

时间:2014-09-04 12:10:41

标签: python dns mx-record dnspython

我正在尝试在我的代码中使用dnspython但是当它到达import语句时,我收到以下错误:

>>> import DNS.resolver
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\python27\lib\site-packages\DNS\resolver.py", line 31, in <module>
    import dns.exception
ImportError: No module named dns.exception

我尝试使用pip,easy_install和git repo手动安装,但似乎没有什么可行的。任何想法??

代码:

import DNS.resolver

if __name__ == "__main__":

    domain = 'hotmail.com'
    for x in dns.resolver.query(domain, 'MX'):
        print x.to_text()

3 个答案:

答案 0 :(得分:3)

您可以采取的另一件措施是使用Synaptic再次安装 python-dnspython 。 (是否以前没有关于两面派的问题)

有时,如果您尝试使用 pip 安装此软件包,可能会出现以下问题:

  

命令python setup.py egg_info失败,错误代码为1   / tmp / pip_build_root / dnspython存储失败的调试日志   /root/.pip/pip.log

使用Synaptic清除旧文件并从该软件包安装新文件。我知道这个问题已经解决,但我想添加更多相关信息:)

答案 1 :(得分:2)

首先,您的代码应为:import dns.resolver

使用pip安装 dnspython 时似乎存在问题,您应该使用git克隆 dnspython 存储库并运行文件 setup.py 如下:

git clone https://github.com/rthalley/dnspython
cd dnspython\
python setup.py install

如果您的计算机上没有安装git,您可以手动下载存储库。

答案 2 :(得分:1)

那是因为包和模块名称是小写的(参见PEP 8)。这很好用:

import dns.resolver
import dns.exception

您还应该注意,您自己的* .py文件名都不会与dns包冲突。您的* .py文件不应命名为dns.py.还要注意* .pyc文件。