Windows环境下安装apache-airflow==1.10.10报错求助
我之前帮同事处理过一模一样的问题,本质是**setproctitle库在Windows环境下的兼容性缺陷**——Airflow 1.10.10依赖的该库版本对Windows VC编译器支持不完善,而且这个库本身是为Unix-like系统设计的,Windows根本用不上它的核心功能(修改进程标题)。下面给你几个可行的解决办法:
方法一:直接跳过setproctitle的安装
执行安装命令时添加--ignore-installed setproctitle参数,强制忽略这个有问题的依赖:
pip install apache-airflow==1.10.10 --ignore-installed setproctitle
这个方法最简单,因为Airflow在Windows环境下运行不需要setproctitle的功能,跳过它完全不影响核心使用。
方法二:手动安装依赖+跳过setproctitle
如果方法一遇到依赖缺失的问题,可以分两步安装:
- 先单独安装Airflow本体(不自动装依赖):
pip install apache-airflow==1.10.10 --no-deps
- 再安装Airflow的官方依赖,同时忽略setproctitle:
pip install -r https://raw.githubusercontent.com/apache/airflow/1.10.10/requirements.txt --ignore-installed setproctitle
如果无法访问GitHub,可以手动去Airflow 1.10.10的仓库下载requirements.txt文件,再用本地路径执行命令。
方法三:改用WSL2运行(推荐长期方案)
Airflow 1.x版本官方其实不支持Windows环境,后续还可能遇到更多类似的兼容性问题。如果你的系统是Windows 10/11,强烈建议用WSL2(Windows子系统Linux)来安装:
- 开启WSL2并安装Ubuntu发行版
- 在WSL中安装Python 3.7(Airflow 1.10.10仅支持Python 3.6-3.7)
- 然后直接执行
pip install apache-airflow==1.10.10,全程不会有编译类的报错
关于报错原因的补充
你看到的具体错误:
src/spt_setup.c(23): warning C4273: '__p__environ': inconsistent dll linkage
src/spt_setup.c(459): error C2099: initializer is not a constant
是因为setproctitle的源码引用了Unix环境特有的__p__environ变量,Windows VC编译器对该变量的定义和库中定义冲突;同时Windows和Unix的C语法规则差异导致了初始化器非常量的错误,这些问题在旧版本的setproctitle中没有针对Windows做修复。
内容的提问来源于stack exchange,提问作者Иван Дуб

