일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파이썬
- Docker
- 컴퓨터네트워크
- HADOOP
- airflow
- 컴퓨터 네트워크
- AWS
- http
- Go
- 가상환경
- Django
- 데이터 웨어하우스
- 종류
- sql
- TIL
- 데브코스
- dockerfile
- 데이터 엔지니어링
- 데이터베이스
- PYTHON
- airflow.cfg
- 정리
- 운영체제
- redshift
- 데이터엔지니어링
- linux
- S3
- 자료구조
- TCP
- 데이터 파이프라인
- Today
- Total
홍카나의 공부방
[Airflow] 외부 모듈에서 라이브러리 No module 문제 해결하기 본문
plugins 폴더에 있는 외부 모듈에서
외부 라이브러리를 import하는데 airflow에서 이를 찾을 수 없다는 오류 메시지가 나왔다.
분명 로컬 파이썬 가상환경에서 해당 라이브러리를
pip install로 설치했는데도 불구하고 인식못하는 것이다.
1. 문제 원인
> 처음 Airflow를 설치할 때 Airflow를 실행할 파이썬 환경에 해당 라이브러리가 같이 설치되지 않았다.
Numpy나 Pandas와 같은 대중적인 라이브러리의 경우,
Airflow 공식 이미지로 컨테이너를 설치할 때 기본적으로 같이 설치되지만 특정한 라이브러리는 그렇지 않다.
로컬에서 .env로 PYTHONPATH를 맞춰주는 등
로컬단에서의 해결 방법을 다 시도해봤는데 여전히 no module 문제가 발생한다면
Airflow의 파이썬 환경에서 문제가 발생 했을 가능성이 있다.
그리고 만약 DAG를 구현하면서 새로 추가해야할 모듈은
어떻게 설치해야 할까?
2. 문제 해결
1. 외부 라이브러리를 포함한 DockerFile을 구성해서 이미지로 만든 뒤, 이를 기반으로 컨테이너를 만든다.
예시로 Python 가상환경에서 requirements를 모두 설치한 뒤에,
requirements.txt를 만들고 이를 설치하도록 Dockerfile에 추가하는 것이다.
FROM apache/airflow:2.7.3-python3.11
COPY requirements.txt /
RUN pip install --no-cache-dir "apache-airflow==${AIRFLOW_VERSION}" -r /requirements.txt
예시 Dockerfile은 위와 같다.
이후
docker-compose build
docker-compose up
을 진행해준다.
아래 블로그를 참고하면 더 좋다!
https://jetechnology.tistory.com/9
2. docker-compose.yaml 내부의 PIP_ADDITIONAL_REQUIREMENTS를 수정한다.
어떻게 보면 이게 더 쉬운 방법인데,
처음에 이 방법을 찾지 못하고 헤맸다.
x-airflow-common에서 _PIP_ADDITIONAL_REQUIREMENTS의 값을 변경하면 된다.
> _PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:- yfinance pandas}
이런식으로 말이다.
'Data Engineering > Airflow' 카테고리의 다른 글
[Airflow] 에어플로우 번역 책 오탈자 - 1) 스케쥴러 (0) | 2024.03.10 |
---|---|
[Airflow] 컨테이너 고정IP 할당 & PostgresDB 확인 (1) | 2023.12.17 |
[Airflow] python airflow library 설치하기 (0) | 2023.12.16 |
[Airflow] python operator - 템플릿 사용이 가능한 파라미터 (0) | 2023.11.19 |
[Airflow] Task Decorator 간단 사용법 (0) | 2023.11.16 |