对同一 DAG (Airflow) 中的不同任务使用不同的 pandas 版本

Use different pandas version for different tasks in the same DAG (Airflow)

假设我有两个任务使用两个版本,比方说,pandas

#my_task_one
import pandas as pd  #Pandas 1.0.0
def f1(data):
    .
    .
    return 0

#my_task_two
import pandas as pd   #version 2.0.0
def f2(data):
    .
    .
    return 0

在我的气流中(本地,没有 Docker),有没有办法为每个任务创建一个 venv 或需求文件,例如

#dag.py
t1 = PythonOperator(
        task_id = "t1",
        python_callable = f1,
        requirements = "my_task_one_requirement.txt"  #How to set requirements for this task?
    )

t2 = PythonOperator(
        task_id = "t2",
        python_callable = f2,
        requirements = "my_task_two_requirement.txt"   #How to set requirements for this task?
    )

t1>>t2

如果它不能在同一个 DAG 文件中,有没有办法指定给定 DAG 文件的要求,例如将 t1t2 放在 [=16 中=] 和 DAG2,但 packages/requirement-file?

Airflow 有 PythonVirtualenvOperator 适合此用例。

t1 = PythonVirtualenvOperator(
    task_id="t1",
    python_callable=f1,
    requirements=["pandas==1.0.0"],
)

t2 = PythonVirtualenvOperator(
    task_id="t2",
    python_callable=f2,
    requirements=["pandas==2.0.0"],
)