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

在Heroku部署带Selenium的Flask应用时Chrome驱动路径报错如何解决

Heroku部署Selenium+Flask抓取应用崩溃解决方案

你当前的代码存在两个核心错误,是导致应用无法启动的直接原因:

  • 配置项设置顺序错误:options.binary_location 必须在初始化webdriver之前设置,你现在是先初始化driver再指定Chrome二进制路径,配置完全不生效
  • 驱动路径没有读取环境变量:executable_path=("CHROMEDRIVER_PATH") 这里你直接传了固定字符串,没有从环境变量中读取配置好的驱动路径

你可以按照以下步骤逐一修正配置:

1. 修正Selenium配置代码

调整配置顺序,同时补充Heroku无图形环境运行Chrome必须的启动参数:

from selenium import webdriver
import os

options = webdriver.ChromeOptions()
# 先设置Chrome二进制路径
options.binary_location = os.environ.get("GOOGLE_CHROME_BIN")
# 补充必备启动参数
options.add_argument("--headless=new")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--disable-gpu")
# 从环境变量读取chromedriver路径
driver = webdriver.Chrome(executable_path=os.environ.get("CHROMEDRIVER_PATH"), options=options)

2. 验证Buildpack配置

确认你已经添加了以下两个官方Buildpack,且顺序正确:

  • heroku/chromedriver
  • heroku/google-chrome
    如果使用第三方Buildpack,请确保Chrome驱动版本和Chrome浏览器版本匹配,避免版本兼容导致的启动失败

3. 检查依赖和启动配置

确认你的requirements.txt中已经添加了正确的依赖:

flask
selenium>=4.0.0
gunicorn

同时根目录需要存在Procfile文件,内容为:
web: gunicorn 你的Flask入口文件名:app
比如你的Flask启动文件是app.py,就写web: gunicorn app:app

4. 端口绑定配置

Heroku会随机分配应用运行端口,你需要在启动Flask时读取对应环境变量:

if __name__ == '__main__':
    port = int(os.environ.get("PORT", 5000))
    app.run(host='0.0.0.0', port=port)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:18:02