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