python - ModuleNotFoundError - 导入 Python 文件时出现气流错误
问题描述
我创建了一个非常简单的 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 文件只是一个文件,它收集了一个 tweeter 帐户的所有推文,并将结果保存在 Postgres 数据库中。
如果我删除 PythonOperator 代码并导入代码工作正常。我已经测试了几乎所有东西,但我不太确定这是一个错误还是其他什么。
有可能当我为 docker 映像创建卷时,它只是导入主 dag 并停在那里导致不导入整个包?
解决方案
为了帮助其他可能登陆此页面并因为我犯的同样错误而出现此错误的人,我将在这里记录下来。
__init__.py
我在文件夹中有一个不必要的dags/
文件。
删除它解决了问题,并允许所有 dag 找到它们的依赖模块。
推荐阅读
- ios - Firebase User Auth check in App delegate
- java - Change DB column type on the fly
- javascript - 在formpree中使用uploadcare而不使用小部件
- ios - CollectionView 单元格移出框架
- javascript - "npm start" throws Error: Plugin/Preset files are not allowed to export objects, only functions
- php - Laravel 和 Nova 中的“在 null 上调用没有 globalScopes 的成员函数”
- python - How to extract only a specific part of url in Python and add its value as another column in df for every row?
- angular - Angular:Redux 和延迟加载
- xml - 如何使用 xslt 将 xml 转换为字符串
- javascript - Reactjs - 我想使用一些 json-server 模拟数据来测试我的登录应用程序