gpt4 book ai didi

python - 如何在 Heroku 中部署带有子进程(python)的 Node.js 应用程序?

转载 作者:行者123 更新时间:2023-12-05 02:02:14 25 4
gpt4 key购买 nike

我正在尝试部署一个带有运行机器学习算法的子进程的 Node.js 应用程序。我可以在本地使用它,但是当我尝试在 Heroku 服务器上运行时,我收到一些消息调用,其中缺少一些库,如下所示:

ModuleNotFoundError: No module named 'pandas'

我尝试手动创建 requirements.txt 并将必要的库放在那里:

pandas
pymongo
dnspython
scikit-learn
scipy
selenium
webdriver-manager
textblob

但它不起作用。我需要做一些额外的配置吗?

非常感谢您的帮助!

最佳答案

Heroku dynos 运行软件的方式是通过一个叫做 buildpack 的东西。

当您将应用程序部署到 Heroku 时,它会查看您的代码并尝试确定您使用的是哪种编程语言,然后基于此使用相应的构建包运行您的应用程序。

例如,如果您将应用程序部署到 Heroku,并且该应用程序在项目目录的根目录中有一个 package.json 文件,Heroku 将假定您的应用程序是 JavaScript 应用程序并使用 Node.js buildpack .

Buildpacks 包含许多预安装的依赖项。例如,Node.js buildpack 包含 node(因此您可以运行 JavaScript 代码)以及许多 Linux 依赖项,以便您的应用程序能够安装可能依赖的常用库/工具在他们身上。

但是...这种 buildpack 策略的一个缺点是,例如,如果您正在部署 Node.js 应用程序,默认的 Node.js 构建将不会随附 Python 和安装的各种 Python 库依赖项。这是因为 Heroku 支持许多不同的编程环境,如果只有一个 buildpack 安装了所有东西,它会很慢/很复杂。太疯狂了!

因此,在您的情况下,您需要做的是使用多个构建包! Heroku 有一种方法可以让您为您的应用程序启用多个构建包,这样您的应用程序就可以拥有 Node.js 依赖项以及例如 Python 依赖项!

Heroku 文档站点上的 This article 解释了如何为给定应用程序使用多个构建包。

为简单起见,以下是具体说明:

# This command will set your default buildpack to Node.js
$ heroku buildpacks:set heroku/nodejs

# This command will set it up so that the Heroku Python buildpack will run first
$ heroku buildpacks:add --index 1 heroku/python

通过执行上述操作,您将能够让 Heroku 通过传统的 requirements.txt 文件安装您的 Python 依赖项,就像您使用任何普通 Python 应用程序一样。

关于python - 如何在 Heroku 中部署带有子进程(python)的 Node.js 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66000300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com