我有一个在本地主机上完美运行的nodeJS应用程序,该NodeJS应用程序的一部分必须运行python脚本,该脚本使用SYS返回数据。当我将其上传到Heroku时,运行python脚本时失败。由于我是直接运行节点应用程序,而不是python,因此很难直接获得错误消息。相反,我到处都放置了try和except消息,并打印了消息以返回python(例如,将其传递到convert message部分),并发现文件顶部的导入中有2个导致python代码崩溃。
import sys
import spacy
import nltk
如果我在sys之后进行尝试,看来它没有在sys上崩溃。相反,正是spacy和nltk导致了问题。
经过一番谷歌搜索后,我发现必须像使用Pip一样使用requirements.txt进行安装。
所以在requirements.txt中,我有
spacy
nltk
((我最初尝试将其与版本号一起使用,但失败了)
但是,这仍然不能解决问题。我对如何解决这个问题有些迷茫。我是否将错误的内容放到Requirements.txt中,或者当首先运行nodeJS应用而不是python文件时,heroku不能运行需求?
这是我第一次使用Heroku,因此如果我做错的事情很明显,我会道歉。
谢谢
编辑,包括日志照片:
将开发环境与生产环境相匹配(反之亦然)。确保生产环境(Heroku)支持您的版本。
在此处阅读有关支持哪些Python版本的信息:https://devcenter.heroku.com/articles/python-support#supported-runtimes
然后您可以通过指定runtime.txt
来锁定该版本:https://devcenter.heroku.com/articles/python-runtimes
确定双方都使用相同的Python版本后,请获取已安装库的副本。
python3 -m pip freeze > requirements.txt
这会将所有已安装的Python库写入requirements.txt
。我使用了python3
,但对您来说它可能称为python
,py
或py3
。
指定Python runtime.txt
很重要,因为最新的Python版本(3.8和更高版本)不支持ntlk
,请参阅:https://pypi.org/project/nltk/
最后通过app.json
明确指定所需的Heroku构建包:https://devcenter.heroku.com/articles/app-json-schema
"buildpacks": [
{
"url": "https://github.com/heroku/heroku-buildpack-java"
},
{
"url": "https://github.com/heroku/heroku-buildpack-python"
}
]