Apache Airflow 2.5容器添加pymssql至_PIP_ADDITIONAL_REQUIREMENTS报错
解决Airflow 2.5容器安装pymssql失败的问题
问题原因
pymssql依赖FreeTDS库完成编译与运行,官方Airflow容器镜像默认未预装该依赖。在M1 macOS的arm64架构环境下,pip安装pymssql会触发源码编译流程,因缺少FreeTDS相关头文件和库文件,导致检测不到clock_gettime函数,最终安装失败。
解决方案
方案1:自定义Airflow镜像,预先安装系统依赖
编写自定义Dockerfile,基于官方Airflow镜像安装FreeTDS开发包及编译工具:
FROM apache/airflow:2.5.0 USER root RUN apt-get update && apt-get install -y --no-install-recommends \ freetds-dev \ gcc \ && rm -rf /var/lib/apt/lists/* USER airflow
构建该镜像后,用其部署Airflow,再将pymssql==2.2.5加入_PIP_ADDITIONAL_REQUIREMENTS即可完成正常安装。
方案2:使用预编译wheel包(可选)
若不想自定义镜像,可尝试强制使用预编译wheel包跳过源码编译:
pip install pymssql==2.2.5 --only-binary :all:
注:需确认对应arm64架构的预编译wheel包存在,若不存在仍需采用方案1。
方案3:替换为pyodbc库
若pymssql安装仍存在障碍,可改用pyodbc连接SQL Server,同样需先安装系统依赖:
- 自定义镜像时安装unixodbc-dev:
FROM apache/airflow:2.5.0 USER root RUN apt-get update && apt-get install -y --no-install-recommends \ unixodbc-dev \ && rm -rf /var/lib/apt/lists/* USER airflow
- 将
pyodbc加入_PIP_ADDITIONAL_REQUIREMENTS即可完成安装。
内容的提问来源于stack exchange,提问作者Nageshwar Burman
相关产品推荐
相关产品推荐

