pymongo-mongodb + srv“必须安装dnspython”错误

时间:2018-10-22 13:15:13

标签: python database mongodb pymongo dnspython

我试图从Atlas连接MongoDB,但遇到“ 必须安装dnspython错误”。

我的 mongo uri (样机):mongodb+srv://abc:123@something.something.com/admin?retryWrites=True

我的 pymongo版本 3.6.1 我已经安装dnspython并完成了import dns

仍然,我收到错误消息“必须安装 dnspython模块才能使用mongodb + srv:// URI

有人可以帮忙吗?

10 个答案:

答案 0 :(得分:12)

要使用 mongo + srv 协议,您需要安装 pymongo-srv 启动此命令以使用python 3进行操作:

pip3 install pymongo[srv]

或其他版本的

pip install pymongo[srv]

答案 1 :(得分:5)

我遇到了同样的问题并尝试了

pip install dnspython==2.0.0

这是https://pypi.org/project/dnspython/

的最新版本

它起作用了:D

答案 2 :(得分:1)

我想在这里回答我自己的问题。正如我在评论中提到的那样,必须重新启动jupyter笔记本的内核,才能使pymongo对加载的dnspython生效。

答案 3 :(得分:0)

可能是协议,您的URI应该以以下开头:

mongo + srv 代替mongo + src

如果仍然无法正常工作,请在PipMongo和dnspython的版本(以及您正在使用的python版本)中列出一个点列表。

答案 4 :(得分:0)

在requirements.txt中,将pymongo替换为pymongo[tls,srv],如here所述。

答案 5 :(得分:0)

我用以下方法解决了这个问题:

$ python -m pip install pymongo [srv]

答案 6 :(得分:0)

您可以使用mongo://代替mongodb+srv://

答案 7 :(得分:0)

我在 Ubuntu 18 上遇到了同样的问题,但因为我使用的是 Anaconda 我刚试过

Conda install dns python

我运行了一个 IPython,当同一个实例打开时它不起作用,但是当我重新启动该实例时它起作用了。

在另一台机器上使用

Conda install dns python

它可以工作,但在测试之前我由于不同的原因不得不完全重新启动我的机器

答案 8 :(得分:0)

pip install dnspython

dnspython 是 Python 的 DNS 工具包。它支持几乎所有的记录类型。它可用于查询、区域传输和动态更新。支持 TSIG 认证消息和 EDNS0。

答案 9 :(得分:-1)

我遇到了同样的问题,并找到了以下行。

import dns.resolver
dns.resolver.default_resolver=dns.resolver.Resolver(configure=False)
dns.resolver.default_resolver.nameservers=['8.8.8.8'] 

它对我有用。