繁体   English   中英

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

[英]How to deploy a Node.js application with a child process (python) in Heroku?

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

ModuleNotFoundError: No module named 'pandas'

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

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

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

非常感谢你的帮助!

您的 Heroku 测功机运行您的软件的方式是通过一个叫做buildpack的东西。

当您将应用程序部署到 Heroku 时,它会查看您的代码并尝试找出您使用的编程语言,然后基于此,将使用相应的 buildpack 运行您的应用程序。

For example, if you deploy an app to Heroku and the app has a package.json file in the root of your project directory, Heroku will assume your app is a JavaScript app and use the Node.js buildpack .

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

But... One downside of this buildpack strategy is that if you're deploying a Node.js app, for example, the default Node.js building will NOT come with Python and the various Python library dependencies installed. 这是因为 Heroku 支持许多不同的编程环境,如果只有一个构建包安装了所有东西,它会很慢/很复杂。 会很疯狂!

因此,就您而言,您需要做的是使用多个构建包! Heroku 可以让您为您的应用启用多个构建包,以便您的应用可以拥有 Node.js 依赖项以及Python 依赖项,例如!

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

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

# 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 应用程序一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM