【问题标题】:How do I run python in a conda environment with airflow?如何在带有气流的 conda 环境中运行 python?
【发布时间】:2022-12-09 08:27:59
【问题描述】:

康达 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 气流中进行。必须有默认参数或 .bashrc 等的秘密才能在非交互模式下激活 anaconda 环境,但我是 windows conda 移植和教程并不方便。

还有其他解决方案,它基本上做了一堆棘手的事情来在您选择的环境中启动 python, How to run Airflow PythonOperator in a virtual environment

这个秘密技巧就是在环境中运行 python:

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

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

How to change working directory and specify conda environment in Apache Airflow

但是奇怪的是,我的环境和我的基础环境有相同的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


    【解决方案1】:

    我最终这样做的方法是使用 conda run 命令 (inspired from this answer)。 conda run 允许您以编程方式触发 conda 环境而无需激活它 - 这在气流中有效。

    【讨论】:

      猜你喜欢
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      • 1970-01-01
      • 2018-12-18
      • 2018-02-18
      相关资源
      最近更新 更多