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

我正在尝试从 Atlas 连接 MongoDB。

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

我的 皮蒙哥版本3.6.1

我已经安装了 dnspython和做 import dns

但我仍然得到这个错误:

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

75958 次浏览

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

Mongo + srv 代替 mongo + src

如果它仍然不能工作,请放置一个 pip 列表,其中包含 PyMongo 和 dnspython (以及您正在使用的 python 版本)的版本

在 requments.txt 中,将 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://

我也遇到了同样的问题

pip install 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']

这招对我很管用。

pip install dnspython

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

现有的答案对我来说都不管用,我必须这样做:

sudo apt-get install python3-dnspython