【问题标题】:Using Pymongo in my Python script through NodeJs通过 NodeJs 在我的 Python 脚本中使用 Pymongo
【发布时间】: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 集合中获取的一些数据,所以我需要访问我的数据库。我已经安装了 pymongodnspython 并且我确信这一点,因为每当我为其中任何一个运行安装命令时,我都会得到一个

已满足要求:/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


【解决方案1】:

尝试运行:

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

在你的命令行中。

然后尝试再次安装dnspython

【讨论】:

  • 当我第一次运行命令时它返回了一个错误Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/pip-19.0.3-py2.7.egg/EGG-INFO/PKG-INFO' Consider using the `--user` option or check the permissions.我在“安装”之后添加了“--user”并且pip升级成功,但是当我运行pip3 install dnspython它返回了相同的消息我在帖子里提到过。
【解决方案2】:

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

我只需要把'python'改成'python3.7'就可以解决问题,所以代码变成了

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

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

如果您想更详细地了解该过程,请查看 cmets。

【讨论】:

    猜你喜欢
    • 2018-12-15
    • 2017-03-13
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    相关资源
    最近更新 更多