我正在对 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 构建和运行时失败。
最佳答案
请注意,对于 Airflow ,默认情况下,[core]
>dags_folder
的值为 /usr/local/airflow/dags
表示 Airflow 将在路径 /usr/local/airflow/dags
处查找 dags。
因此,您的所有 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
希望对你有帮助!
关于python - 为什么 docker-compose python 找不到 Airflow 操作符的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60033544/