通过NodeJs在我的Python脚本中使用Pymongo



我是"产卵;使用的NodeJs服务器代码中的python脚本

var spawn = require('child_process').spawn;
var python_process = spawn('python', ['server/matcher/matcher.py'])

我的python代码应该处理从MongoDB集合中提取的一些数据,所以我需要访问我的数据库。我已经安装了pymongodnspython,我确信这一点,因为每当我为它们中的任何一个运行安装命令时,我都会得到

已满足要求:/Library/framework/Python.framework/Versions/3.9/lib/python3.9/site-packages(1.16.0(中的dnspython

然而,每当我尝试运行代码时,我都会收到错误

pymongo.errors.ConfigurationError:;dnspython";必须安装模块才能使用mongodb+srv://URIs

我像往常一样,按照文档中的指示访问数据库

from pymongo import MongoClient
client = MongoClient(<connection string>)
db = client.<db name>
users = db.users.find({})

我意识到这是一个环境问题,因为当我在PyCharm中运行Mongo时,相同的代码正确运行并成功连接到它,但我不确定如何使它在NodeJs的子进程中工作。

尝试运行:

sudo pip install --upgrade pip` or `python -m pip install --upgrade pip

在您的命令行中。

然后再次尝试安装dnspython

因此,正如日志消息所报告的,所需的模块确实已经安装,但它们被安装到了Python3.7和Python3.9目录中(我在PyCharm上运行了我的代码,它使用Python3.7作为解释器,反过来解释它们在它的目录中,我使用‘pip3’安装了模块,这解释了它们在Python3.9的目录(我认为((

我只需要将'python'更改为'python3.7'来解决问题,所以代码变成了

var spawn = require('child_process').spawn;

如果您遇到同样的问题,请首先确保检查模块的安装位置,然后确保使用相同版本的python运行脚本。

如果您想更详细地了解流程,请查看评论。

最新更新