Heroku Golang应用部署时能否同步处理Python依赖?能否通过Procfile实现?
解答
核心结论
可以同步处理Python依赖,但不能仅靠Procfile实现,需要结合Heroku的多构建包功能——因为Heroku默认只会用Go构建包处理你的应用,不会自动识别Python的requirements.txt。
具体操作步骤
添加多构建包到Heroku应用
顺序很关键:Python构建包要放在前面,Go构建包放在最后(Heroku会用最后一个构建包启动应用),用Heroku CLI执行:heroku buildpacks:add --index 1 heroku/python heroku buildpacks:add --index 2 heroku/go这样部署时Heroku会先执行Python构建流程(安装
requirements.txt里的依赖),再处理Go应用的编译。让Python构建包找到你的requirements.txt
你的requirements.txt在/bin目录,有两种方式让构建包识别:- 在项目根目录创建
pip.conf文件,指定依赖文件路径:
[global] requirements = ./bin/requirements.txt- 在项目根目录创建软链接指向
/bin下的文件:
ln -s bin/requirements.txt requirements.txt- 在项目根目录创建
Procfile的作用
Procfile依然只负责定义Go应用的启动命令,比如:web: ./your-go-app-binary它不用处理Python依赖安装,依赖安装是由Python构建包完成的,Go应用调用Python脚本时,就能直接使用已安装好的依赖。
验证方法
部署完成后,可通过以下命令检查Python依赖是否安装成功:
heroku run pip3 list
也可以直接触发应用中调用Python脚本的REST接口,验证功能是否正常。
内容的提问来源于stack exchange,提问作者Mike S
相关产品推荐
相关产品推荐

