带有 docker 的 Airflow 找不到本地 python 脚本和目录(ModuleNotFoundError)

问题描述 投票:0回答:0

我使用 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 以便气流添加我的根目录?

python docker airflow python-module
© www.soinside.com 2019 - 2024. All rights reserved.