通过 NodeJs 在我的 Python 脚本中使用 Pymongo
Using Pymongo in my Python script through NodeJs
我正在使用
从我的 NodeJs 服务器代码中“生成”一个 python 脚本
var spawn = require('child_process').spawn;
var python_process = spawn('python', ['server/matcher/matcher.py'])
我的 python 代码应该处理从我的 Mongo 数据库集合中获取的一些数据,因此我需要访问我的数据库。我已经安装了 pymongo 和 dnspython 我很确定,因为每当我 运行 安装命令对于他们中的任何一个,我都得到
Requirement already satisfied: dnspython in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (1.16.0)
但是,每当我尝试 运行 我的代码时,我都会收到错误消息
pymongo.errors.ConfigurationError: The "dnspython" module must be installed to use 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 和 Python 3.9 的目录中(我 运行 我的代码在 PyCharm 上,它使用 python3.7 作为解释器,解释它们在其目录中,我使用 'pip3' 安装模块,这解释了它们在 python3 中。 9目录(我认为))
只需要将'python'
改成'python3.7'
就可以解决问题,所以代码就变成了
var spawn = require('child_process').spawn;
如果您遇到同样的问题,请首先确保检查模块的安装位置,然后确保您的脚本 运行 使用相同版本的 python。
如果您想更详细地了解该过程,请查看评论。
我正在使用
从我的 NodeJs 服务器代码中“生成”一个 python 脚本var spawn = require('child_process').spawn;
var python_process = spawn('python', ['server/matcher/matcher.py'])
我的 python 代码应该处理从我的 Mongo 数据库集合中获取的一些数据,因此我需要访问我的数据库。我已经安装了 pymongo 和 dnspython 我很确定,因为每当我 运行 安装命令对于他们中的任何一个,我都得到
Requirement already satisfied: dnspython in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (1.16.0)
但是,每当我尝试 运行 我的代码时,我都会收到错误消息
pymongo.errors.ConfigurationError: The "dnspython" module must be installed to use 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 和 Python 3.9 的目录中(我 运行 我的代码在 PyCharm 上,它使用 python3.7 作为解释器,解释它们在其目录中,我使用 'pip3' 安装模块,这解释了它们在 python3 中。 9目录(我认为))
只需要将'python'
改成'python3.7'
就可以解决问题,所以代码就变成了
var spawn = require('child_process').spawn;
如果您遇到同样的问题,请首先确保检查模块的安装位置,然后确保您的脚本 运行 使用相同版本的 python。
如果您想更详细地了解该过程,请查看评论。