gpt4 book ai didi

python - 在heroku上的nodejs中生成python脚本

转载 作者:行者123 更新时间:2023-12-03 12:12:52 26 4
gpt4 key购买 nike

摘要问题: Heroku为什么会显示os.system('say ...')是“未找到”,我该如何解决?
我有一个 Node.js 应用程序,我在其中使用 child_process生成一个 Python 脚本,在给出特定单词时读出音频。我知道当我在 localhost:5000 上运行我的服务器时它可以工作,但是当我在 Heroku 上部署它时,我在这篇文章底部的图片中看到了一个错误。我试过添加 heroku/python buildpack 但这也不起作用。
我在 Node.js 中的 JS 代码如下所示:

app.get('/perform/:word', readOut)
function readOut(req, res) {

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

var process = spawn('python', ["./readout.py", req.params.word]);

res.send("Action completed!")
}
请注意,“操作已完成”确实会发送回我的客户端,因此它正在运行代码。
我通过捕获 stderr 意识到存在错误并将其打印到控制台。这仅发生在 Heroku 上,我不确定这意味着什么。我不太确定 python 脚本在 localhost 上正常工作时如何出错,但话又说回来,我认为缺乏认识是我的垮台。
这是我的 Python 文件的样子:
import os
import sys

os.system('say {}'.format(sys.argv[1]))
错误信息是这样的:
stderr: sh: 1: say: not found
有谁知道为什么 Heroku 会发生这种情况?我是否缺少某个包裹或任何东西?我如何让 Heroku 知道 os.system()电话?
编辑 :我实际上在 Python 脚本中添加了一段代码,上面写着
os.system('date')
并且它正确地登录到标准输出。一定是 os.system('say') 的特定问题.

最佳答案

这里至少有两个问题:

  • 看起来 macOS 有一个 say命令,但这在 Linux 上不存在。 Heroku 不运行 macOS。
  • 即使 say可用,它不会做任何有用的事情。它会尝试在某个数据中心的服务器上说出它被告知要说的任何内容。服务器可能没有播放任何音频的硬件,如果有,没有人会听到它。
    这似乎只适用于您的本地机器,因为您的客户端和服务器在同一台机器上。如果您希望在您的客户端机器上听到一些东西,则必须使用客户端 JavaScript 来完成。
    What is the difference between client-side and server-side programming?

  • 最后,Python 在这里没有做任何有用的事情。如 say可用并执行您想要的操作,您可以使用 spawn() 调用它或 JavaScript 代码中的某些内容。

    关于python - 在heroku上的nodejs中生成python脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62766091/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com