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

pymongo-mongodb+;srv“;“必须安装dnspython”;错误,python,mongodb,pymongo,Python,Mongodb,Pymongo,我试图从Atlas连接MongoDB,但遇到以下错误: dnspython必须安装错误 我的mongouri是:mongodb+srv://abc:123@something.something.com/admin?retryWrites=True 我的pymongo版本是3.6.1 我已经安装了dnspython并完成了导入dns 但我仍然得到这个错误: 必须安装dnspython模块才能使用mongodb+srv://URI 可能是协议,您的URI应以以下内容开头: mongo+srv代替m

我试图从Atlas连接MongoDB,但遇到以下错误:

dnspython必须安装错误

我的mongouri是:
mongodb+srv://abc:123@something.something.com/admin?retryWrites=True

我的pymongo版本是
3.6.1

我已经安装了
dnspython
并完成了
导入dns

但我仍然得到这个错误:

必须安装dnspython模块才能使用mongodb+srv://URI


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

mongo+srv代替mongo+src


如果它仍然不起作用,请在requirements.txt中列出一个包含PyMongo和dnspython版本(以及您正在使用的python版本)的pip列表,将PyMongo替换为PyMongo[tls,srv],如前所述。

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

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


$python-m pip安装pymongo[srv]

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

pip3 install pymongo[srv]
对于其他版本,也可以使用此版本:

pip install pymongo[srv]
正如@lukrebs所建议的,对于ZSH,添加引号:

pip3 install 'pymongo[srv]'

您可以使用
mongo://
而不是
mongodb+srv://

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

pip安装dnspython==2.0.0

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


它起作用了:D

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

Conda install dns python
我有一个IPython正在运行,当同一个实例打开时它不工作,但当我重新启动该实例时它工作了

在不同的机器上使用

Conda install dns python

它工作了,但是在测试之前,由于不同的原因,我不得不重新启动我的机器。我遇到了同样的问题,并发现了下面这行代码

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

这对我很有效。

我需要重新表述我的问题。我自己设法通过重新启动jupyter笔记本的内核来解决这个问题。在我在命令行“pip install dnspython==1.15.0”中执行此操作后,错误消失了。对于python3用户来说,没有
mongo+srv
存在
mongodb+srv
,以下内容也很有用:
python3-m pip install pymongo[srv]
如果使用zsh,您的命令必须是
python3-m pip安装'pymongo[srv]'
。我认为旧版本的mongo不支持副本。如果使用
mongo://
,则最终URI将为
mongo://db-part-0.host.com:27017,db-part-1.host.com:27017,db-part-2.host.com:27017
。是的,URI中有逗号。对我来说效果很好。感谢那些使用macos和zsh并获得
zsh的人:没有找到匹配项:pymongo[srv]
,可以尝试
pip3安装“pymongo[srv]”
dnspython==2.0.0也对我有效,尽管它不适用于pymongo[tls,srv]和dnspython==1.16.0。你救了我。谢谢