python - 为什么 docker-compose python 找不到 Airflow 操作符的模块

标签 python docker docker-compose airflow

我正在对 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/

相关文章:

python - 如何根据数据框python中列中列表的值进行分组

python - Python 中是否存在不能在字符串中进行类型转换的数据类型

python - 使用 python 模板字符串类渲染列表

docker - Google Cloud Build-结果不会跨步骤保存

docker - 在使用docker compose之前是否需要先构建容器?

python - Django1.6,事务是否适用于原始 SQL?

docker - 在此 WSL1 发行版中找不到“docker”命令

wordpress - WordPress默认docker镜像如何将文件复制到主机系统中?

docker - Docker撰写错误

docker - 如何在 docker-compose.yml 中通过远程镜像传递构建参数?