如何在带有airflow的conda环境中运行python?

问题描述 投票:0回答:2

康达4.10.1 气流2.2.2

我通常按以下方式运行脚本

conda activate env
python /path to script/script.py

所以我将这两个命令放入 bash 脚本中并使用 bashOperator,如下所示:

t1 = BashOperator(
        task_id='testtask',
        depends_on_past=False,
        bash_command='/path to bash/script.bash ',
        retries=0,
    )

并得到了可怕的 conda 未设置来激活环境。

然后我做了:

conda init bash
conda activate env
python /path to script/script.py

但是,当然,必须重新启动 shell,我不知道如何在 apache airflow 中执行此操作。必须有默认参数或 .bashrc 等的秘密才能在非交互模式下激活 anaconda 环境,但我是 Windows conda 移植者,教程并不方便。

还有另一个解决方案,它基本上做了一些棘手的事情来在您选择的环境中启动 python, 如何在虚拟环境中运行Airflow PythonOperator

那个秘密黑客就是在环境中运行 python:

bash_command='~/anaconda3/envs/env_of_choice/bin/python 
                              /python_files/python_task1.py',

这个家伙能够在 anaconda 3.9 上做到这一点!

如何在 Apache Airflow 中更改工作目录并指定 conda 环境

但神秘的是,我的环境和我的基础环境有相同的Python。当我为这两种环境输入 env 时,差异如下:

conda_shlvl=2 instead of 1
conda_prefix_1 = users/me/opt/anaconda3
path includes /users/me/opt/anaconda3/envs/env_of_choice/bin
conda_prefix=/users/me/opt/anaconda3/envs/env_of_choice
conda_default_env=sfdc

有几种方法可以走。也许我没有正确设置环境,它使用基本Python而不是在虚拟环境中创建Python。我使用了 yml 文件。在 DAG 中设置这些环境变量也确实很诱人,但这也许不是可接受的方式?我找不到教程。什么是正确的道路?或者也许我的版本 4.10.1 太高级,我应该降级到 3.9。太多的选择。建议?

anaconda airflow
2个回答
0
投票

我最终这样做的方法是使用

conda run
命令(受到这个答案的启发)。 conda run 允许您以编程方式触发 conda 环境,而无需激活它 - 这在气流中有效。


0
投票

请查看 https://github.com/lynker-analytics/airflow-conda-operator,了解调用 conda/mamba 环境的便捷方法。

© www.soinside.com 2019 - 2024. All rights reserved.