Docker部署Airflow运行papermill报NoSuchKernel找不到python3内核如何解决
问题解决方法
1 内核缺失报错(No such kernel named python3)
该报错是因为自定义的镜像里没有注册jupyter可用的python3内核,按以下步骤处理:
- 编辑自定义镜像Dockerfile,新增ipykernel安装和内核注册指令:
# 安装ipykernel依赖 RUN pip install --no-cache-dir ipykernel # 注册名为python3的内核 RUN python -m ipykernel install --name python3 --user
- 重新构建镜像后重启Airflow服务即可。如果只是临时测试,也可以手动进入运行中的airflow worker容器执行上面两条命令,不过容器重启后配置会失效,推荐直接打包到镜像中。
2 缓存目录不可写报错
该报错是因为black代码格式化工具、IPython运行时需要写入缓存目录,默认的/home/airflow/.cache目录不存在或者airflow用户没有写入权限,三种解决方案可任选:
- 方案一:自定义镜像构建时提前创建目录并授权,在Dockerfile中添加:
RUN mkdir -p /home/airflow/.cache/black/21.9b0 \ && chown -R airflow:root /home/airflow/.cache
- 方案二:在DAG的PapermillOperator参数中添加环境变量,指定临时目录作为缓存路径:
PapermillOperator( # 保留原有配置参数 env_vars={ "BLACK_CACHE_DIR": "/tmp/black_cache", "IPYTHONDIR": "/tmp/ipython" } )
- 方案三:在docker-compose.yaml中给airflow worker、scheduler服务统一添加上述两个环境变量,所有任务自动生效无需修改DAG。
内容的提问来源于stack exchange,提问作者Bruce Macdonald
相关产品推荐
相关产品推荐

