32

我一直在使用 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)

非常感谢你的帮助。

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

4

15 回答 15

52

我遇到了与 dnspython 相同的问题。

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

所以我的步骤是:

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

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

编辑

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

于 2014-02-08T05:21:23.000 回答
15

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

$ pip uninstall dnspython

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

$ pip install dnspython

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

于 2017-07-11T18:27:48.250 回答
7

您还可以使用以下命令使用 pip 安装软件包:

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

于 2016-03-29T14:31:35.547 回答
4

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

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

于 2014-02-08T08:37:06.200 回答
3

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

pip install --upgrade dnspython

即使安装了 python-dns 包。

于 2016-10-01T07:34:07.560 回答
1

您正在使用的 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

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

于 2014-02-08T07:54:33.907 回答
1

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

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

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

$ python your_script.py
于 2019-05-17T09:35:37.370 回答
1

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

于 2019-07-25T17:26:42.153 回答
1

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

  1. 进入文件夹 dnspython
  2. 你会找到 dns 目录,现在复制它
  3. 然后将其粘贴到 site-packages 目录中

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

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

  1. 转到您的 python 安装文件夹 site-packages 目录
  2. 在此处打开 cmd 并输入命令: pip install dnspython

现在,dnspython 将安装成功。

于 2020-01-15T13:00:17.570 回答
0

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

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

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

于 2016-10-21T02:18:29.783 回答
0

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

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

于 2018-12-10T10:01:24.897 回答
0

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

于 2019-08-27T05:55:06.367 回答
0

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

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

于 2020-04-14T17:30:32.480 回答
0

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

  1. pip3 卸载 dnspython
  2. sudo -H pip3 安装 dnspython

导入 dns

导入 dns.resolver

于 2021-02-02T10:23:29.283 回答
0

如果您没有(或不想)pip安装,还有另一种方法。您可以解决这个问题是使用本机操作系统包管理器安装包。

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

apt install python3-dnspython

于 2021-06-11T05:20:25.970 回答