繁体   English   中英

ModuleNotFoundError - 导入 Python 文件时出现气流错误

[英]ModuleNotFoundError - Airflow error while import Python file

我创建了一个非常简单的 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并重新启动 Web 服务器,但它一直显示错误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 文件只是一个文件,用于收集推特帐户的所有推文并将结果保存在 Postgres 数据库中。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM