컨테이너·워크플로우 자동화/Airflow로 워크플로우 자동화하기

Airflow에서 system_site_packages와 requirements 함께 쓰기

Data Jun 2025. 10. 17. 23:45

Airflow에서 PythonVirtualenvOperator를 사용할 때,
Task 실행 시마다 독립적인 가상환경(virtualenv) 이 자동으로 만들어집니다.
이 환경은 기본적으로 비어 있으며,
필요한 패키지를 직접 지정하지 않으면 어떤 외부 라이브러리도 사용할 수 없습니다.

 

이때 사용하는 옵션이 바로
👉 requirementssystem_site_packages 입니다.

 

 

requirements — 필요한 패키지 직접 설치

requirements는 새로 만들어질 가상환경에
추가로 설치할 패키지 목록을 지정하는 옵션입니다.

PythonVirtualenvOperator(
    task_id='example_task',
    python_callable=my_function,
    requirements=['pandas==2.1.0', 'requests'],
    dag=dag,
)

이렇게 하면 Airflow는 Task 실행 전에
pip install pandas==2.1.0 requests 명령을 자동으로 수행한 뒤,
해당 환경에서 함수를 실행합니다.

 

즉, 필요한 패키지를 가상환경 안에 직접 설치하는 방법입니다.

 

system_site_packages — Airflow 환경의 패키지 함께 사용

system_site_packages=True 옵션은

“Airflow의 메인 Python 환경(시스템 환경)에 이미 설치된 패키지를,

새로 만든 가상환경에서도 함께 사용할 수 있게 해준다”
는 의미입니다.

PythonVirtualenvOperator(
    task_id='example_task',
    python_callable=my_function,
    system_site_packages=True,
    dag=dag,
)

이 옵션을 켜면, Airflow 환경에 이미 설치된
pandas, numpy, requests 같은 패키지를
다시 설치하지 않고 바로 사용할 수 있습니다

즉, Airflow 환경의 라이브러리를 가상환경에서도 재활용하는 옵션입니다.

 

 

두 옵션을 함께 쓰면?

이 두 옵션은 서로 충돌하지 않습니다.
오히려 함께 사용하면 더 효율적입니다.

def use_color_and_pandas():
    import pandas as pd
    from colorama import Fore
    print(Fore.GREEN + f"Pandas version: {pd.__version__}")

PythonVirtualenvOperator(
    task_id='virtualenv_combined',
    python_callable=use_color_and_pandas,
    system_site_packages=True,              # Airflow 환경 패키지 재사용
    requirements=['colorama==0.4.0'],       # colorama만 추가 설치
    dag=dag,
)

이렇게 하면:

  • pandas → Airflow 시스템 환경에서 그대로 사용
  • colorama → 가상환경 내에서 새로 설치

✅ Airflow 환경 + 추가 패키지를 조합한 “공유형 가상환경”을 구성할 수 있습니다.

 

 

 

정리하면

 

Airflow의 PythonVirtualenvOperator는 매우 유연합니다.

system_site_packages=True로 기존 패키지를 재활용하고,
requirements로 부족한 라이브러리만 추가 설치하면
불필요한 설치를 줄이면서도 필요한 환경을 깔끔하게 구성할 수 있습니다.