0

我正在使用我的 NodeJs 服务器代码“生成”一个 python 脚本

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

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

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

但是,每当我尝试运行我的代码时,我都会收到错误消息

pymongo.errors.ConfigurationError:必须安装“dnspython”模块才能使用 mongodb+srv:// URI

我像往常一样访问我的数据库,并按照文档中的说明

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

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

4

2 回答 2

0

尝试运行:

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

在你的命令行中。

然后尝试dnspython再次安装。

于 2020-11-08T15:02:37.187 回答
0

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

我只需要更改'python'即可'python3.7'解决问题,因此代码变为

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

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

如果您希望更详细地完成该过程,请查看评论。

于 2020-11-08T15:42:10.847 回答