如何在Heroku中部署具有子进程(python)的Node.js应用程序?
我正在尝试部署一个Node.js应用程序,其中包含一个子进程,该子进程运行机器学习算法。我可以在本地使用它,但当我尝试在Heroku服务器上运行时,我收到一些调用缺少某些库的消息,如bellow:如何在Heroku中部署具有子进程(python)的Node.js应用程序?,python,node.js,heroku,child-process,Python,Node.js,Heroku,Child Process,我正在尝试部署一个Node.js应用程序,其中包含一个子进程,该子进程运行机器学习算法。我可以在本地使用它,但当我尝试在Heroku服务器上运行时,我收到一些调用缺少某些库的消息,如bellow: ModuleNotFoundError: No module named 'pandas' 我尝试手动创建requirements.txt并将必要的库放在那里: pandas pymongo dnspython scikit-learn scipy selenium
ModuleNotFoundError: No module named 'pandas'
我尝试手动创建requirements.txt并将必要的库放在那里:
pandas
pymongo
dnspython
scikit-learn
scipy
selenium
webdriver-manager
textblob
但它不起作用。我需要做一些额外的配置吗
非常感谢你的帮助 Heroku dynos运行软件的方式是通过一种叫做 当您将应用程序部署到Heroku时,它会查看您的代码并尝试找出您正在使用的编程语言,然后在此基础上,将使用相应的构建包运行您的应用程序 例如,如果您将应用程序部署到Heroku,并且该应用程序在项目目录的根目录中有一个
package.json
文件,Heroku将假定您的应用程序是JavaScript应用程序,并使用
构建包包含许多预安装的依赖项。例如,Node.js构建包包含节点
(因此您可以运行JavaScript代码)以及许多Linux依赖项,以便您的应用程序能够安装可能依赖它们的公共库/工具
但是。。。此buildpack策略的一个缺点是,例如,如果您正在部署Node.js应用程序,默认的Node.js构建将不会附带Python和安装的各种Python库依赖项。这是因为Heroku支持很多不同的编程环境,如果只有一个buildpack安装了所有的东西,那么它会很慢/复杂。那太疯狂了
因此,在您的情况下,您需要做的是使用多个构建包!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通过传统文件安装您的Python依赖项,就像任何普通Python应用程序一样。非常感谢您的帮助!这工作做得很好!