我正在为docker-airflow postgres etl进行测试。我的项目结构目前如下所示:
docker-airflow
|
├── Dockerfile
├── __init__.py
├── dags
│ ├── __init__.py
│ ├── pandas_etl.py
│ └── tuto.py
├── docker-compose.yml
├── operators
├── __init__.py
└── pandas_etl_over_postgres_operator.py
将我的pandas_etl_over_postgres_operator.py
导入到pandas_etl.py
dag中时,出现一个错误,提示找不到该模块。
pandas_etl.py导入代码为:
from operators.pandas_etl_over_postgres_operator import PandasETLOverPostgresOperator
我尝试了以下两种选择,它们也给出相同的错误。
from .operators.pandas_etl_over_postgres_operator import PandasETLOverPostgresOperator
和
from ..operators.pandas_etl_over_postgres_operator import PandasETLOverPostgresOperator
导入在本地工作正常,但是当我使用docker-compose构建和运行时失败。
答案 0 :(得分:0)
请注意,对于气流,默认情况下,[core]
> dags_folder
的值为/usr/local/airflow/dags
,这意味着气流将在路径/usr/local/airflow/dags
处查找破损。 / p>
因此,您所有的dags代码都应位于该文件夹中,因此,您需要更改以下几点才能使代码起作用:
docker-compose.yml
文件中:- ./dags:/usr/local/airflow/dags/dags
- ./logs:/usr/local/airflow/dags/logs
- ./operators:/usr/local/airflow/dags/operators
pandas_etl.py
文件中:from operators.pandas_etl_over_postgres_operator import PandasETLOverPostgresOperator
希望有帮助!
答案 1 :(得分:0)