python - 如何使用 Spacy 将 Rasa Bot 部署到 Heroku

标签 python heroku rasa-nlu

我使用 Rasa NLU 和 Rasa Core 制作了一个机器人。它连接到 Node.js 服务器和 React.js 前端。我运行这个 python 脚本的方式是:

var PythonShell = require('python-shell');

var options = {
    mode: 'text',
    pythonOptions: ['-u'],
    scriptPath: './server/Rasa_Bot_Final'
};

var pyshell = new PythonShell('dialogue_management_model.py', options);


app.post('/message', (req, res) => {
    pyshell.on('message', function (message) {
        // received a message sent from the Python script (a simple "print" statement)
        res.end(message)
    });
    pyshell.send(req.body.messageFromUser);
})

这适用于我的本地主机,但是,当部署到 heroku 时,我收到此错误:

Error: OSError: [E050] Can't find model 'en'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory.

这是因为我无法运行:

python -m spacy download en_core_web_md
python -m spacy link en_core_web_md en

在 heroku 上。

有人可以帮我解决这个问题吗?

我引用了这些: https://spacy.io/usage/

https://github.com/explosion/spaCy/issues/1099

最佳答案

确保在需求中添加了 spacy 和包含 python 命令的 Procfile。

参见:Doc for Procfile

Procfile中:

web: python -m spacy download en_core_web_md && python -m spacy link en_core_web_md en

如果它来自无法运行 python 代码的事实,那么它可能来自无法识别您的代码并相应地设置所有内容的 dyno。

你应该检查一下,我认为这就是 heroku 调用的 buildpack .

关于python - 如何使用 Spacy 将 Rasa Bot 部署到 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50934751/

相关文章:

python - 如何在 Rasa 中获取最后的用户输入

python - 为什么使用 contextlib.suppress 而不是 try/except 和 pass?

python - docker 容器中的 2 个 Flask 应用程序之间进行通信

python - 我在使用 pandas 从 csv 文件中提取数据时遇到错误

spring - 最佳 Spring MVC、Hibernate、Mysql 和 Maven 应用程序托管服务器

ruby-on-rails - Heroku Rails 4 Puma 应用产生额外的实例

python - 避免 Python 中的模块命名空间污染

node.js - 在 Heroku 中显示 Probot 日志

rasa-nlu - 如何使用 gunicorn 在多线程模式下运行 RASA Server

rasa-nlu - 如何在 RASA 聊天机器人中添加按钮?