You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Ruby应用中安装Python依赖包的方法

在Heroku上运行Ruby Sinatra + Python混合应用的配置方案

我刚好处理过类似的混合语言应用场景,给你一步步拆解解决方案:

核心思路

Heroku默认会根据项目根目录的文件自动检测运行环境,但混合语言需要手动指定多个buildpack,让Heroku依次安装Ruby和Python的依赖环境,确保两种语言的运行环境都能正常配置。

具体配置步骤

1. 准备依赖配置文件

  • Ruby依赖:保留你已有的Gemfile和Gemfile.lock,确保里面包含Sinatra等Ruby应用所需的gems,示例如下:
    source 'https://rubygems.org'
    gem 'sinatra'
    gem 'puma' # 生产环境常用的服务器
    
  • Python依赖:在项目根目录创建requirements.txt文件,列出Python脚本需要的所有包(建议指定版本号避免兼容问题),示例如下:
    requests==2.31.0
    pandas==2.1.1
    

2. 设置Heroku多语言Buildpacks

Heroku需要明确知道要安装两种语言环境,通过命令行设置buildpack顺序(主应用是Ruby,优先处理):

# 先设置Ruby为主要buildpack
heroku buildpacks:set heroku/ruby
# 添加Python buildpack作为第二个
heroku buildpacks:add --index 2 heroku/python

你可以用heroku buildpacks命令确认配置是否生效,输出应该显示两个buildpack,顺序是Ruby在前,Python在后。

3. 在Sinatra应用中调用Python脚本

在你的Sinatra代码里,直接用system()调用Python脚本即可,Heroku会把Python3加入系统PATH,所以直接用python3命令就行:

get '/execute-python' do
  # 假设Python脚本放在项目根目录的scripts文件夹下,用绝对路径避免路径问题
  script_path = File.join(File.dirname(__FILE__), 'scripts', 'my_script.py')
  run_result = system("python3 #{script_path}")
  
  if run_result
    "Python脚本执行成功!"
  else
    "Python脚本执行失败,请查看日志排查问题。"
  end
end

4. 部署与调试

部署应用后,如果遇到问题,用heroku logs --tail查看实时日志:

  • 检查Ruby gems和Python包是否都成功安装
  • 查看脚本调用时的错误信息(比如路径错误、依赖缺失等)

注意事项

  • 确保requirements.txt和Gemfile都放在项目根目录,否则Heroku的buildpack无法识别
  • 本地测试时,可以先在本地安装好Ruby gems和Python包,确认脚本调用正常后再部署
  • 如果Python脚本需要读取或写入文件,注意Heroku的文件系统是临时的,持久化数据需要用外部存储(比如S3)

内容的提问来源于stack exchange,提问作者Jonah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:47:26