fer*_*tti 3 python heroku child-process node.js
我正在尝试部署一个带有运行机器学习算法的子进程的 Node.js 应用程序。我可以在本地使用它,但是当我尝试在 Heroku 服务器上运行时,我收到一些消息,称缺少一些库,如下所示:
ModuleNotFoundError: No module named 'pandas'
Run Code Online (Sandbox Code Playgroud)
我尝试手动创建requirements.txt并将必要的库放在那里:
pandas
pymongo
dnspython
scikit-learn
scipy
selenium
webdriver-manager
textblob
Run Code Online (Sandbox Code Playgroud)
但这不起作用。我需要做一些额外的配置吗?
非常感谢你的帮助!
Heroku dynos 运行软件的方式是通过称为buildpack 的方式。
当您将应用程序部署到 Heroku 时,它会查看您的代码并尝试找出您正在使用的编程语言,然后基于该语言,将使用相应的构建包运行您的应用程序。
例如,如果您将应用程序部署到 Heroku 并且该应用程序package.json在项目目录的根目录中有一个文件,Heroku 将假定您的应用程序是 JavaScript 应用程序并使用Node.js buildpack。
Buildpack 包含许多预安装的依赖项。例如,Node.js 构建包包含node(以便您可以运行 JavaScript 代码)以及许多 Linux 依赖项,以便您的应用程序能够安装可能依赖它们的通用库/工具。
但是......这种构建包策略的一个缺点是,例如,如果您要部署 Node.js 应用程序,则默认的 Node.js 构建将不会附带 Python 以及安装的各种 Python 库依赖项。这是因为 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
Run Code Online (Sandbox Code Playgroud)
通过执行上述操作,您将能够让 Heroku 通过传统的requests.txt文件安装您的 Python 依赖项,就像使用任何普通 Python 应用程序一样。
| 归档时间: |
|
| 查看次数: |
1201 次 |
| 最近记录: |