我创建了一个非常简单的DAG,以使用PythonOperator执行Python文件。我正在使用docker image运行Airflow,但无法识别我有.py文件的模块
结构如下:
main_dag.py
plugins/__init__.py
plugins/njtransit_scrapper.py
plugins/sql_queries.py
plugins/config/config.cfg
cmd运行docker airflow镜像:
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文件只是一个收集高音帐户的所有tweet并将结果保存在Postgres数据库中的文件。
如果我删除PythonOperator代码并导入,则代码工作正常。我已经测试了几乎所有内容,但是我不确定这是错误还是其他原因。
有可能当我为docker映像创建卷时,它只是导入主dag并停在那里而导致没有导入整个软件包吗?
答案 0 :(得分:0)
为帮助其他可能会因为我犯的相同错误而进入此页面并获得此错误的人,我将在此处记录下来。
我在__init__.py
文件夹中有一个不必要的dags/
文件。
删除它可以解决问题,并允许所有dag查找其依赖模块。