【发布时间】:2020-11-08 14:47:04
【问题描述】:
我正在使用我的 NodeJs 服务器代码“生成”一个 python 脚本
var spawn = require('child_process').spawn;
var python_process = spawn('python', ['server/matcher/matcher.py'])
我的 python 代码应该处理从我的 MongoDB 集合中获取的一些数据,所以我需要访问我的数据库。我已经安装了 pymongo 和 dnspython 并且我确信这一点,因为每当我为其中任何一个运行安装命令时,我都会得到一个
已满足要求:/Library/Frameworks/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 子进程中工作。
【问题讨论】:
-
python命令是否指向您安装软件包的python3.9安装? -
@rdas 你的意思是
spawn?我该如何检查? -
假设 spawn 使用默认的 shell(不熟悉 node.js),你应该可以用
which python检查 -
@rdas 它返回了
/usr/bin/python,这是否意味着它没有使用 Python3 运行脚本?我在 Mac 上,我在某处读到它使用 python2 来运行它的一些程序,所以我认为将默认值更改为 python3 并不明智。 -
最好将你的 spawn 改为使用
python3.9
标签: python node.js mongodb pymongo dnspython