Heroku:部署包含python包的JS Web应用程序/venv

dhxwm5r4  于 2022-11-13  发布在  Python
关注(0)|答案(1)|浏览(132)

我用react/node/postgresql做了一个web应用程序。在这个应用程序中,我使用了一个js包python-bridge,它允许我在一个js文件中运行python代码。这样我就可以使用一个python包,它没有一个好的js替代方案。下面是一个简单的例子,python-bridge和python代码在一个js文件中:

'use strict';
 
let assert = require('assert');
let pythonBridge = require('python-bridge');
 
let python = pythonBridge();
 
python.ex`import math`;
python`math.sqrt(9)`.then(x => assert.equal(x, 3));
 
let list = [3, 4, 2, 1];
python`sorted(${list})`.then(x => assert.deepEqual(x, list.sort()));
 
python.end();

我用$ python3 -m venv root/server创建了一个venv,以便让这个文件运行python包,当在我的机器上使用$ source server/venv/bin/activate$ yarn dev进行本地开发和运行时,这个包运行得很好。
我尝试将应用程序部署到Heroku,但是python代码没有运行。当我检查日志时,我得到了与在本地运行应用程序而不激活venv时相同的错误。下面,'recipe_scrapers'是导入scraper函数的python包,而'scraper'是我分配给函数的python变量。

如何部署到Heroku以使python代码正常运行?
我有requirements.txt和所有的python依赖项,还有runtime.txtpython-3.10.6在我的根目录下。我试着在Procfile中添加venv命令,但没有成功(感觉像是糟糕的做法)。
我不熟悉python,所以如果我误解了venvs/app的部署,我很抱歉。部署python app和js app在我看来是一样的,所以我不知道该做些什么改变才能让app在Heroku上正常运行。

dbf7pr2w

dbf7pr2w1#

我在查看Heroku设置时发现了这个问题。原来我需要将python添加到Buildpack设置中。所以现在我有了nodejs和python Buildpack,并且在部署时安装了依赖项(python app detected... installing requirements with pip)。
tbh我以前不知道构建包,在研究这个问题时也没有遇到过它们,但我很高兴最终这是一个简单的修复。

相关问题