Google App Engine部署Selenium时Chrome和Chromedriver报错如何处理?
问题根因
你触发的OSError: [Errno 8] Exec format error错误的核心原因是:你本地使用的是Windows平台的Chrome和ChromeDriver二进制文件(后缀为.exe),而Google App Engine的运行环境为Linux系统,Windows格式的可执行文件无法在Linux环境下执行。
解决方案
- 替换可执行文件
停止使用Windows版的chrome.exe和chromedriver.exe,下载对应Google App Engine运行架构的Linux版Chrome浏览器和ChromeDriver二进制文件,确保两者版本匹配、且与你使用的Selenium版本兼容。 - 调整代码配置
- 将代码中Windows专属的
.exe文件路径替换为Linux版二进制文件的存放路径(Linux下可执行文件无.exe后缀) - 新增适配Linux容器无桌面环境的Chrome启动参数,同时替换Selenium已废弃的
chrome_options参数为options,示例代码如下:
driverOptions = webdriver.ChromeOptions() # 替换为Linux版Chrome的实际存放路径 driverOptions.binary_location = 'Application_2/chrome-linux/chrome' driverOptions.add_argument("--headless=new") # 适配容器运行环境的必要参数 driverOptions.add_argument("--no-sandbox") driverOptions.add_argument("--disable-dev-shm-usage") driverOptions.add_argument("--disable-gpu") # 替换为Linux版ChromeDriver的实际存放路径 driver = webdriver.Chrome('Application_2/chromedriver-linux64/chromedriver', options=driverOptions) - 将代码中Windows专属的
- 添加可执行权限
给上传至Google App Engine的Chrome和ChromeDriver二进制文件添加可执行权限,可在部署脚本或者app.yaml的启动指令中加入以下命令:chmod +x 你的Chrome文件路径 你的ChromeDriver文件路径 - 可选优化(针对GAE灵活环境)
直接在app.yaml中配置系统级依赖安装逻辑,自动安装对应版本的Chrome,无需手动上传二进制文件,进一步避免架构不兼容问题。
内容的提问来源于stack exchange,提问作者A B
相关产品推荐
相关产品推荐

