macOS 14.1.1安装Apache Airflow时无法安装google-re2的问题
解决Apache Airflow安装时google-re2构建wheel失败的问题
问题根源
这个编译错误是因为google-re2依赖的abseil-cpp版本与re2自身版本不兼容,导致C++层面absl::string_view无法直接转换为const re2::StringPiece,Python 3.11环境下这类版本冲突更容易触发。
可行解决方案
1. 指定兼容的google-re2版本
直接安装经过验证、适配Python 3.11的google-re2版本,避免自动拉取存在兼容问题的最新版:
pip install google-re2==1.1.1
完成后再继续安装Apache Airflow:
pip install apache-airflow
2. 锁定abseil版本并禁用构建隔离
先安装与google-re2兼容的abseil-cpp绑定版本,再禁用pip的构建隔离(强制使用当前环境已安装的依赖,而非重新拉取可能冲突的版本):
pip install absl-py==1.4.0 pip install google-re2 --no-build-isolation
3. 使用预编译wheel包跳过本地构建
如果你的系统是x86_64等常见架构,可直接在PyPI上搜索google-re2,找到对应Python 3.11的预编译wheel包(文件名含cp311标识),下载后本地安装,绕开编译步骤:
pip install /path/to/your/downloaded/google_re2-xxx-cp311-cp311-xxx.whl
4. 修改源码补丁后重新编译
如果必须从源码构建,找到报错的_re2.cc文件第125行,手动添加类型转换代码,解决类型不匹配问题:
将原代码中传递absl::string_view参数的位置,替换为re2::StringPiece类型的构造调用:
// 示例修改: // 原代码 re2::RE2::FullMatch(input, pattern, absl_string_view_var); // 修改后 re2::RE2::FullMatch(input, pattern, re2::StringPiece(absl_string_view_var.data(), absl_string_view_var.size()));
修改完成后,重新执行安装并清除缓存:
pip install google-re2 --no-cache-dir
内容的提问来源于stack exchange,提问作者Mahdi
相关产品推荐
相关产品推荐

