[英]NodeJS application running on Heroku fails when getting data from a python script
我有一個在本地主機上完美運行的 nodeJS 應用程序,這個 NodeJS 應用程序的一部分必須運行一個 python 腳本,該腳本使用 SYS 返回數據。 當我將它上傳到 Heroku 時,它會在運行 python 腳本時失敗。 由於我直接運行節點應用程序而不是 python 應用程序,因此很難直接獲取錯誤消息。 相反,我已將 try 和 except 消息放在任何地方,並打印消息以返回到 python(例如,將其發送到轉換消息部分)並發現它是導致 python 代碼崩潰的文件頂部的 2 個導入。
import sys
import spacy
import nltk
如果我將 try 放在 sys 之后,它似乎不會在 sys.path 上崩潰。 相反,導致問題的是 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 : ntlk
最后通過app.json
明確指定所需的 Heroku app.json
:
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"
}
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.