pymongo - 必须安装"dnspython"模块才能使用 mongodb+srv:// URIs



我正在尝试从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

最新更新