【发布时间】: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。太多的选择。建议?
【问题讨论】: