康达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。太多的选择。建议?