我使用 Airflow 和默认的
docker-compose.yaml
文件。我有自己的源目录,我想从 DAGs
运行。结构是这样的:
root_package
├── __init__.py
├── __pycache__
├── foo1.py
├── dags
│ ├── __init__.py
│ ├── __pycache__
│ └── update.py
├── subdir
│ ├── __init__.py
│ ├── __pycache__
│ └── foo2.py
└── plugins
我要做的第一件事是将这个根目录作为卷添加到 docker-compose.yaml 文件中。对于
/dags
和 /plugins
目录,这已经默认完成。我只是像这样添加了完整的根:
volumes:
- ${AIRFLOW_PROJ_DIR:-.}/dags:/opt/airflow/dags
- ${AIRFLOW_PROJ_DIR:-.}/logs:/opt/airflow/logs
- ${AIRFLOW_PROJ_DIR:-.}/plugins:/opt/airflow/plugins
- ${AIRFLOW_PROJ_DIR:-.}:/opt/airflow
其次,我需要将我的 python 目录添加到
PYTHONPATH
,因为我需要从 dag
(例如:update.py)中导入它们:
from root_package import foo1
with DAG(
dag_id="id123", schedule_interval=None, start_date=datetime(2023, 4, 21)
) as dag:
# call foo1 functions from a PythonOperator
...
目前我收到
ModuleNotFoundError: No module named 'root_package'
作为网络服务器错误。
如何在 docker-compose 文件中添加 PYTHONPATH 以便气流添加我的根目录?