【问题标题】:ModuleNotFoundError - Airflow error while import Python fileModuleNotFoundError - 导入 Python 文件时出现气流错误
【发布时间】:2019-10-30 00:47:51
【问题描述】:

我创建了一个非常简单的 DAG 来使用 PythonOperator 执行 Python 文件。我正在使用 docker 映像运行 Airflow,但它无法识别我的 .py 文件所在的模块

结构是这样的:

main_dag.py
plugins/__init__.py
plugins/njtransit_scrapper.py
plugins/sql_queries.py
plugins/config/config.cfg

cmd 运行 docker 气流镜像:

docker run -p 8080:8080 -v /My/Path/To/Dags:/usr/local/airflow/dags  puckel/docker-airflow webserver

我已经尝试airflow initdb 并重新启动网络服务器,但它一直显示错误ModuleNotFoundError: No module named 'plugins'

对于我正在使用的导入语句:

from plugins import njtransit_scrapper

这是我的 PythonOperator:

tweets_load = PythonOperator(
    task_id='Tweets_load',
    python_callable=njtransit_scrapper.main,
    dag=dag
)

我的 njtransit_scrapper.py 文件只是一个文件,它收集了一个 tweeter 帐户的所有推文,并将结果保存在 Postgres 数据库中。

如果我删除 PythonOperator 代码并导入代码工作正常。我已经测试了几乎所有东西,但我不太确定这是错误还是其他原因。

有可能当我为 docker 映像创建卷时,它只是导入主 dag 并停在那里导致不导入整个包?

【问题讨论】:

  • 您使用import plugins.njtransit_scrapper 从包中导入模块。
  • 谢谢@Goyo 我都试过了,但遗憾的是结果一样。
  • 那么这个包就不能从你导入的地方访问了。

标签: python airflow


【解决方案1】:

为了帮助其他可能登陆此页面并因为我犯的同样错误而出现此错误的人,我将在这里记录。

dags/ 文件夹中有一个不必要的 __init__.py 文件。
删除它解决了问题,并允许所有 dag 找到它们的依赖模块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    相关资源
    最近更新 更多