【问题标题】:How to install dependency modules for airflow DAG task(or python code)? , "Failed to import module" in airflow DAG when using kuberentesExecutor如何为气流 DAG 任务(或 python 代码)安装依赖模块? , 使用 kuberentesExecutor 时气流 DAG 中的“导入模块失败”
【发布时间】:2021-03-31 16:18:30
【问题描述】:

我有一个气流 DAG“example_ml.py”,它有一个任务“train_ml_model”,这个任务正在调用/运行一个 python 脚本“training.py”。

-Dags/example_ml.py -Dags/training.py

当我运行 Dag 时,它无法导入训练脚本执行所需的模块。

DAG 任务的代码 sn-p:

   train_model = PythonOperator(
        task_id='train_model',
        python_callable=training,
        dag = dag
    )

PS:我使用的是 k8s 集群。 Airflow在k8s集群中运行,executor设置为kubernetesExecutor。因此,当每个 DAG 被触发时,都会分配一个新的 pod 来完成任务。

【问题讨论】:

    标签: airflow kubernetespodoperator


    【解决方案1】:

    你能提供更多细节吗?您是否在本地计算机上运行此程序?一个容器?你确定这个包已经安装了吗?正如您评论的那样,该错误似乎与缺少包有关。创建要安装的任务可能无法解决问题。理想的情况是在您运行的任何气流上安装要求

    【讨论】:

    • 我在 Kubernetes 集群上运行气流,并使用 Kubernetes Executor 进行气流。因此运行一个 DAG,它创建一个 pod 并执行 pod 内的任务。我正在使用 PythonOperator 来运行训练任务。
    • 好的,当你创建一个 Pod 时,你需要指定它将运行的镜像。您需要在该映像上安装该软件包。您必须已定义要运行的气流图像。如果是自定义图像,只需在该图像上安装
    【解决方案2】:

    我遇到了同样的问题,这就是我解决它的方法:

    按照 python 代码运行

    >>> import sys
    >>> from pprint import pprint
    >>> pprint(sys.path)
    

    我得到了这些路径

     '/home/.local/lib/python3.6/site-packages',
     '/usr/local/lib/python3.6/dist-packages',
     '/usr/lib/python3/dist-packages'
    

    对我来说气流列在下面

    '/usr/local/lib/python3.6/dist-packages'
    

    因此,要找到该软件包,必须将其安装在此处。我使用这个命令来安装我的包:

    sudo python3 -m pip install -system [package-name] -t $(pwd)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-12
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多