Flask虚拟环境集成Selenium遇Chromedriver异常退出(状态码127)及模板缺失问题
Flask集成Selenium问题解决指南
一、Chromedriver 退出码127问题
退出码127在Ubuntu下核心原因是可执行文件无法找到/运行,分以下几种情况处理:
1. 补全系统依赖库
Chromedriver依赖Chromium的底层运行库,直接执行命令安装:
# Ubuntu 20.04及以下 sudo apt-get install -y libnss3 libgconf-2-4 libxi6 libxrender1 libxss1 libappindicator1 libasound2 # Ubuntu 22.04及以上(libgconf-2-4已废弃) sudo apt-get install -y libnss3 libgbm1 libxi6 libxrender1 libxss1 libappindicator3-1 libasound2
2. 强制匹配Chromedriver与Chromium版本
autoinstaller偶尔会出现版本不兼容,手动校验并修复:
- 查看当前Chromium版本:
chromium-browser --version - 查看Chromedriver版本:
chromedriver --version
如果版本号前几位不一致,手动下载对应版本的Chromedriver,放到/usr/local/bin目录,再赋予执行权限:
sudo chmod +x /usr/local/bin/chromedriver
3. 修复运行权限与无头模式配置
服务器环境下必须用无头模式,同时避免权限冲突,代码里加上这些参数:
from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("--headless=new") # 新版无头模式,兼容性更好 chrome_options.add_argument("--no-sandbox") # 绕过Ubuntu的安全限制 chrome_options.add_argument("--disable-dev-shm-usage") # 解决临时空间不足问题 driver = webdriver.Chrome(options=chrome_options)
另外检查Chromedriver的执行权限:
ls -l $(which chromedriver)
如果没有x权限,执行sudo chmod +x /path/to/chromedriver。
二、error.html模板找不到问题
这是Flask模板查找规则的问题,按以下步骤排查:
- 项目结构必须正确:模板文件必须放在根目录的
templates文件夹下,结构示例:
your_flask_app/ ├── app.py └── templates/ ├── index.html └── error.html
- 文件名区分大小写:Linux系统下
Error.html和error.html是两个文件,检查拼写和大小写是否一致; - 蓝图模板路径:如果用了蓝图,渲染模板时要指定蓝图前缀,比如蓝图名为
main,则写render_template("main/error.html"),或者在蓝图初始化时配置template_folder参数。
内容的提问来源于stack exchange,提问作者VSherr
相关产品推荐
相关产品推荐

