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 中的 python3sudo 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模块导入错误的主要内容,如果未能解决你的问题,请参考以下文章