You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python项目与Airflow间共享代码及优化项目结构?

在Airflow DAG中复用项目通用库的解决方案

项目结构

├── python
│   ├── airflow
│   │   ├── airflow.cfg
│   │   ├── config
│   │   ├── dags
│   │   ├── logs
│   │   ├── requirements.txt
│   │   └── webserver_config.py
│   ├── shared_utils
│   │   ├── auth
│   │   ├── datadog
│   │   ├── drivers
│   │   ├── entities
│   │   ├── formatter
│   │   ├── helpers
│   │   └── system
...

需求背景

与shared_utils同级还有其他若干包,部分为通用库,部分为独立后端服务。我们希望保持Airflow模块独立,同时复用通用库代码。目前已将python目录及python/airflow目录加入PYTHONPATH,但Airflow尚未能引入其他包的代码。

可行解决方案(已验证)

经过实际测试,以下方式可实现需求且无冲突:

  • 保留现有项目结构,继续同时将python和python/airflow目录加入PYTHONPATH
  • 在Airflow目录下的requirements.txt中添加shared_utils依赖的所有外部包(如果shared_utils有依赖的话)
  • 在DAG文件中直接通过绝对导入调用shared_utils的代码,示例:
# 在DAG文件中导入shared_utils的模块
from shared_utils.auth import validate_token
from shared_utils.datadog import submit_monitoring_data

原理说明

将python目录加入PYTHONPATH后,Python会将其识别为根模块目录,shared_utils作为该目录下的一级包可被直接导入;同时python/airflow在PYTHONPATH中能保证Airflow自身的配置、DAG等文件正常加载,两者共存不会产生冲突。

内容的提问来源于stack exchange,提问作者seaguest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:35:34