首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在气流DAG中导入本地模块(python脚本)

在气流DAG中导入本地模块(python脚本)
EN

Stack Overflow用户
提问于 2018-05-03 08:29:16
回答 3查看 32.8K关注 0票数 39

我正在尝试将本地模块( python脚本)导入到我的DAG中。

目录结构:

代码语言:javascript
复制
airflow/
├── dag
│   ├── __init__.py
│   └── my_DAG.py
└── script
    └── subfolder
        ├── __init__.py
        └── local_module.py

My_DAG.py中的示例代码:

代码语言:javascript
复制
#trying to import from local module
from script.subfolder import local_module  

#calling a function in local_module.py  
a = some_function()  

我在气流中出现了一个错误,上面写着“坏掉的DAG: my_DAG。没有一个模块名为'local_ module‘。”

我已经更新了空气流量为1.9.0,但这并不能解决问题。

  • 这里的解决方案是什么?
  • 我还在某个地方读到,我可以通过创建一个插件来解决这个问题。有人能指出我是怎么做到的吗?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2018-05-03 11:00:49

这通常与气流的配置有关。

airflow.cfg中,确保airflow_home中的路径被正确地设置为气流目录结构所在的路径。

然后气流扫描所有子文件夹并填充它们,以便可以找到模块。

否则,只需确保要导入的文件夹位于Python:How to use PYTHONPATH中。

票数 9
EN

Stack Overflow用户

发布于 2018-08-23 16:16:25

我的做法如下:

  1. 使用main()函数在子文件夹中创建Python脚本。
  2. 在dag文件中包括子文件夹和文件的路径声明。

现在,您可以在PythonOperator中使用此脚本

代码语言:javascript
复制
import sys
sys.path.insert(0,"/root/airflow/dags/subfolder"))
import subfolder.script_name as script
...    
t1=PythonOperator(
    task_id='python_script',
    python_callable=script.main,
    dag=dag
)
票数 3
EN

Stack Overflow用户

发布于 2021-07-26 09:41:49

如果您在码头中运行Airlow,那么您需要这样做:

  1. 在dags文件夹中为模块创建一个文件夹。例如,程序
  2. 如下所示(这是停靠者的正确路径):
代码语言:javascript
复制
import sys
sys.path.append('/opt/airflow/dags/programs/my_module')
import my_module
task1 = PythonOperator(
        task_id='my_task_name',
        python_callable=my_module.my_func,
        dag=dag,
    )
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50150384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档