我用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.txt
和python-3.10.6
在我的根目录下。我试着在Procfile
中添加venv命令,但没有成功(感觉像是糟糕的做法)。
我不熟悉python,所以如果我误解了venvs/app的部署,我很抱歉。部署python app和js app在我看来是一样的,所以我不知道该做些什么改变才能让app在Heroku上正常运行。
1条答案
按热度按时间dbf7pr2w1#
我在查看Heroku设置时发现了这个问题。原来我需要将python添加到Buildpack设置中。所以现在我有了nodejs和python Buildpack,并且在部署时安装了依赖项(
python app detected... installing requirements with pip
)。tbh我以前不知道构建包,在研究这个问题时也没有遇到过它们,但我很高兴最终这是一个简单的修复。