Python DNS模块导入错误

Posted

技术标签:

【中文标题】Python DNS模块导入错误【英文标题】:Python DNS module import error 【发布时间】:2014-03-05 16:30:57 【问题描述】:

我一直在使用 python dns 模块。我试图在新的 Linux 安装上使用它,但模块没有被加载。 我已尝试清理并安装,但安装似乎无法正常工作。

$蟒蛇--版本 Python 2.7.3 $ sudo pip 安装 dnspython 下载/解压 dnspython 下载 dnspython-1.11.1.zip (220Kb):下载了 220Kb 为包 dnspython 运行 setup.py egg_info 安装收集的包:dnspython 为 dnspython 运行 setup.py install 成功安装dnspython 打扫干净... $蟒蛇 Python 2.7.3(默认,2013 年 9 月 26 日,20:03:06) [GCC 4.6.3] 在 linux2 上 输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。 >>> 导入 dns 回溯(最近一次通话最后): 文件“”,第 1 行,在 ImportError:没有名为 dns 的模块

python 版本和 pip 版本命令的更新输出

$哪个蟒蛇 /usr/bin/python $蟒蛇--版本 Python 2.7.3 $点子--版本 来自 /usr/lib/python2.7/dist-packages 的 pip 1.0 (python 2.7)

非常感谢您的帮助。

注意:- 我在新机器上安装了防火墙。我不确定它是否会影响导入。但我已经尝试禁用它,但它似乎仍然不起作用。

【问题讨论】:

很可能 dnspython 是为您系统上的另一个 Python 版本安装的。例如,某些系统默认安装了 Python 2.4。 您可以尝试其他 SO 问题的两个最佳答案之一:***.com/q/2812520/42346 谢谢@bernie。我尝试了其他堆栈溢出的答案,但我认为我没有安装多个版本的 python。安装的 pip 也与 python 的版本相匹配。我已经编辑了上面的答案以显示 pip 版本和 python 版本。 【参考方案1】:

我在使用 dnspython 时遇到了同样的问题。

我的解决方案是从他们的官方 GitHub 项目构建源代码。

所以我的步骤是:

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

完成此操作后,我能够导入 dns 模块。

编辑

似乎 pip install 不适用于此模块。按照说明从源安装。

【讨论】:

感谢@DanGar 我能够构建包并安装它现在它可以工作了。但是,您知道这是因为模块还是我的设置中的安装问题。 很高兴它起作用了 :) 这很可能是我们安装设置的问题,因为我已经在其他开发机器上使用了您的方法。 对于 Debian 中的 python3 sudo apt-get install python3-dnspython【参考方案2】:

我通过卸载然后使用 PIP 重新安装 dnspython 模块解决了这个问题。

$ pip uninstall dnspython

在 pycache 中的一长串文件之后,键入 y 继续卸载。完成输入后:

$ pip install dnspython

然后我运行我的脚本并解决了错误。

【讨论】:

【参考方案3】:

您也可以使用以下命令通过 pip 安装软件包:

pip install git+https://github.com/rthalley/dnspython

【讨论】:

这也适用于 zip 文件等。例如:pip install https://github.com/rthalley/dnspython/archive/v1.15.0.zip【参考方案4】:

我使用 pip install dnspython 在我的 Ubuntu 机器上安装了 dnspython 1.11.1。我能够毫无问题地导入 dns 模块

我在基于 Ubuntu 的服务器上使用 Python 2.7.4。

【讨论】:

【参考方案5】:

在 Debian 7 Wheezy 上,我必须这样做:

pip install --upgrade dnspython

即使安装了 python-dns 包。

【讨论】:

【参考方案6】:

很可能您正在使用的 pip 版本没有安装到您正在使用的 python 版本。我有一个盒子就是这种情况......

尝试:

which python

python --version

pip -V

如果看起来 pip 与您的 python 不匹配,那么您可能有类似我在盒子上找到的多个版本的 python 和 pip...

[root@sdpipeline student]# locate bin/pip

/home/student/class/bin/pip

/home/student/class/bin/pip-2.7

/usr/bin/pip

/usr/bin/pip-python

只要我使用 /home/student/class/bin/pip(2.7 与我在那个盒子上的 python 版本匹配),那么我的导入就可以正常工作。

您也可以尝试从源安装 pip:http://www.pip-installer.org/en/latest/installing.html

可能有更好的方法来做到这一点,我也在学习我的方法,但这就是我解决它的方法——希望它有所帮助!

【讨论】:

感谢@scottsanchez 我已经更新了上面的帖子以显示 pip 版本和 python 版本的输出。但似乎我只安装了一个python。我将尝试从源代码安装 pip,看看它是如何工作的。【参考方案7】:

这里的一个可能原因可能是你的脚本有错误的 shebang(所以它没有使用你的 virtualenv 中的 python)。我刚刚做了这个改变,它的工作原理:

-#!/bin/python
+#!/usr/bin/env python

或者忽略 shebang,只在你的 venv 中使用 python 运行脚本:

$ python your_script.py

【讨论】:

对我来说就是这种情况,其中 cli python 是 /usr/local/bin/python 但 shebang 是 #!/usr/bin/python3【参考方案8】:

我在使用“import dns.resolver”时遇到错误。我尝试了 dnspython、py3dns 但它们失败了。 dns 不会安装。经过多次尝试后,我安装了 pubdns 模块,它解决了我的问题。

【讨论】:

【参考方案9】:

我遇到了同样的问题并解决了这个问题,如下所述: 由于您已经成功下载并安装了dnspython,所以

    进入文件夹 dnspython 你会找到dns目录,现在复制它 然后粘贴到site-packages目录里面

就是这样。现在你的问题会解决

如果没有安装 dnspython,你可以这样安装:

    进入你的python安装文件夹site-packages目录 在此处打开cmd并输入命令: pip install dnspython

现在,dnspython就安装成功了。

【讨论】:

【参考方案10】:

此问题可能由 Symantec End Point Protection (SEP) 生成。 而且我怀疑大多数 EPP 产品可能会影响您的脚本运行。

如果 SEP 被禁用,脚本将立即运行。

因此,您可能需要更新 SEP 策略以不阻止 python 脚本访问内容。

【讨论】:

【参考方案11】:

我从 github 源安装了 DNSpython 2.0.0,但运行 'pip list' 会显示旧版本的 dnspython 1.2.0

它只有在我运行 'pip uninstall dnspython' 后才起作用,它删除了旧版本,只剩下 2.0.0,然后 'import dns' 运行顺利

【讨论】:

【参考方案12】:

在我的情况下,我已经在名为“dns.py”的文件中编写了代码,它与包冲突,我必须重命名脚本文件名。

【讨论】:

【参考方案13】:

可以解决这个问题 首先通过 cmd 使用 pip install dnspython 为 python 安装 dns (如果您使用 conda 首先输入 activate 然后您将进入 base(在 cmd 中),然后输入上面的代码) 它将安装在anaconda站点包中,从cmd复制该站点包文件夹的位置,然后打开它。现在复制所有 dns 文件夹并将它们粘贴到 python 站点包文件夹中。它会解决它。

实际上是我们的代码无法在 python\site 包中找到指​​定的包 bcz 它在 anaconda\site 包中。所以你必须复制它(而不是剪切)。

【讨论】:

【参考方案14】:

我在 mac 上导入时遇到了类似的问题。我安装了 python 3.7.3 以下步骤帮助我解决了它:

    pip3 卸载 dnspython sudo -H pip3 安装 dnspython

导入域名

导入 dns.resolver

【讨论】:

【参考方案15】:

如果您没有(或不想)安装pip,还有另一种方法。您可以通过本机 OS 包管理器安装包来解决此问题。

例如对于基于 Debian 的系统,这将是命令:

apt install python3-dnspython

【讨论】:

以上是关于Python DNS模块导入错误的主要内容,如果未能解决你的问题,请参考以下文章

Python中出现request模块导入错误

jenkins python模块导入错误

python中动态导入模块

Python模块导入错误

导入 numpy 模块时出现 Python 错误 [重复]

Python 导入错误:没有名为“PyQt4”的模块