我使用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/
答案 0 :(得分:2)
确保在要求中添加了空格,并添加了包含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。
答案 1 :(得分:0)
首先,请确保您的项目名称和Heroku应用程序的名称完全匹配。
以下对我有用:
Requirements.txt
flask
click
gunicorn==19.9.0
requests==2.21.0
spacy==2.0.11
sklearn-crfsuite==0.3.6
rasa-nlu==0.13.2
rasa-core==0.11.1
rasa-core-sdk==0.11.0
================================================ ==========
Procfile
(假设您在app.py
中定义了应用,路线等
web gunicorn app:app setup.wsgi --log-file -
================================================ =========
下载spaCy en
模型:
然后在您的终端上登录到您的Heroku帐户:
$ heroku run bash -a rec-bot
$ python -m spacy download en