pymongo-mongodb+;srv“;“必须安装dnspython”;错误
我试图从Atlas连接MongoDB,但遇到以下错误: dnspython必须安装错误 我的mongouri是: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
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。你救了我。谢谢