在GCP Cloud Composer中添加google-cloud-data-fusion遇依赖冲突错误
解决Composer 2.2.0 + Airflow 2.5.1中google-cloud-data-fusion的依赖冲突问题
环境与冲突背景
使用版本:composer-2.2.0-airflow-2.5.1
添加PyPI包google-cloud-data-fusion时触发环境更新失败,核心冲突源于protobuf版本矛盾,调整后仍存在多组依赖冲突:
google-cloud-data-fusion 1.8.1要求protobuf!=3.20.0,!=3.20.1,!=4.21.0-4.21.5,<5.0.0dev,>=3.19.5,但当前环境为protobuf 3.20.0mysql-connector-python 8.0.33要求protobuf<=3.20.3、>=3.11.0,但当前环境为protobuf 4.23.1google-ads 20.0.0+composer要求proto-plus==1.19.6,但当前环境为proto-plus 1.22.2google-ads 21.0.0/21.1.0要求protobuf>=4.21.5,但当前环境为protobuf 3.20.3
解决方案
所有冲突的核心是protobuf版本无法同时满足mysql-connector-python和google-ads 21.x的要求,因此需要做以下依赖锁定:
1. 锁定兼容的protobuf版本
选择protobuf==3.20.2:
- 避开
google-cloud-data-fusion禁用的3.20.0/3.20.1版本 - 满足
mysql-connector-python 8.0.33的<=3.20.3限制 - 符合
google-cloud-data-fusion 1.8.1的>=3.19.5要求
2. 降级google-ads到兼容版本
放弃google-ads 21.x版本,使用google-ads==20.0.0+composer:
- 该版本要求
proto-plus==1.19.6,可避免与高版本proto-plus的冲突 - 其依赖的
protobuf范围与我们选定的3.20.2兼容
3. 完整依赖清单(requirements.txt)
将以下内容添加到你的依赖文件中:
protobuf==3.20.2 google-ads==20.0.0+composer google-cloud-data-fusion==1.8.1 mysql-connector-python==8.0.33
4. 本地验证
在本地执行pip check命令,确认所有依赖无冲突后,再提交到Composer环境执行更新操作。
内容的提问来源于stack exchange,提问作者A_Sk
相关产品推荐
相关产品推荐

