我正在尝试从Atlas连接MongoDB。
我的蒙戈乌里是:mongodb+srv://abc:123@something.something.com/admin?retryWrites=True
我的pymongo版本是3.6.1
我已经安装了dnspython
并完成了import dns
但我仍然收到此错误:
必须安装 dnspython 模块才能使用 mongodb+srv://URI
为了使用mongo+srv协议,你需要安装pymongo-srv启动以下命令以使用 python 3 执行此操作:
pip3 install pymongo[srv]
或者这个用于其他版本:
pip install pymongo[srv]
正如@lukrebs所建议的那样,为ZSH添加引号:
pip3 install 'pymongo[srv]'
我想在这里回答我自己的问题。正如我在评论中提到的,必须重新启动 jupyter 笔记本的内核才能使加载的dnspython
生效。
我用以下方法解决了这个问题:
$ python -m pip install pymongo[srv]
在 requirements.txt 中,将pymongo
替换为pymongo[tls,srv]
,如此处所述。
我遇到了同样的问题并尝试了
pip install dnspython==2.0.0
这是https://pypi.org/project/dnspython/
的最新版本
它奏效:D
您可以使用mongo://
而不是mongodb+srv://
我遇到了同样的问题,并找到了以下行。
import dns.resolver
dns.resolver.default_resolver=dns.resolver.Resolver(configure=False)
dns.resolver.default_resolver.nameservers=['8.8.8.8']
它对我有用。
可能是协议,您的 URI 应以以下开头:
mongo+srv而不是 mongo+src
如果它仍然不起作用,请放置一个包含 PyMongo 和 dnspython 版本(以及您正在使用的 python 版本(的点列表
我在 Ubuntu 18 上遇到了同样的问题,但由于我使用的是 Anaconda 我刚刚试过
Conda install dns python
我有一个正在运行的 IPython,当同一个实例打开时它不起作用,但是当我重新启动该实例时它起作用了。
在另一台计算机上使用
Conda install dns python
它有效,但由于不同的原因,我不得不在测试之前完全重新启动我的机器
pip install dnspython
dnspython是一个用于Python的DNS工具包。它支持几乎所有记录类型。它可用于查询、区域传输和动态更新。它支持 TSIG 身份验证的消息和 EDNS0。
现有的答案都不适合我。我必须执行以下操作:
sudo apt-get install python3-dnspython