인프런 커뮤니티 질문&답변

방효석님의 프로필 이미지
방효석

작성한 질문수

Airflow 마스터 클래스

외부 파이썬 함수 수행하기

파이썬 외부함수 임포트 경로 질문

작성

·

156

0

안녕하세요 강사님

실습 따라서 코드 작성하고 dags_python_import_func.py 대그 에어플로우에 올려서 테스트해봤는데 계속 임포트 에러가 나서 질문드립니다.

제 실습환경이 강의의 실습환경과 달라서 그러는건지 잘 모르겠는데 제 실습환경은 아래와 같습니다.

스크린샷 2024-04-05 오후 8.55.30.png

이 상태에서 common.common_func 경로로 get_sftp 함수 임포트하면 moduleNotFoundError가 발생합니다.

plugins를 포함해도 동일하고요ㅜ

어떤게 문제인지 알려주실 수 있을까요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

이미지 설명과 내용을 토대로 문제를 파악했습니다. Apache Airflow에서 파이썬 파일을 임포트할 때는 해당 파일이 위치한 경로를 정확히 파악하는 것이 중요합니다. Airflow DAGs 폴더 내에서 임포트하려는 파이썬 파일이 remote_repoplugins 폴더 내 common 폴더에 있는 common_func.py임을 감안할 때, 임포트 경로가 정확하지 않을 수 있습니다.

Airflow는 dags, plugins, 그리고 PYTHONPATH에 있는 디렉토리의 모듈만 임포트할 수 있습니다. 따라서 접근하고자 하는 함수가 plugins/common/common_func.py에 위치해 있다면, common.common_func 대신 plugins.common.common_func으로 임포트하려고 하셨던 것 같은데 문제가 발생한 것으로 보입니다.

이 문제를 해결하려면, Airflow의 PYTHONPATH 설정을 확인하고, 필요하다면 Airflow 환경변수 설정을 조정하여 plugins 폴더가 포함되도록 해야 합니다. 또는, PYTHONPATHplugins 디렉토리 경로를 명시적으로 추가하는 방법도 있습니다.

또 다른 해결책으로는 Airflow의 dags 폴더나 plugins 폴더 내부에서 공통 함수를 임포트하여 사용하는 것입니다. 하지만, 이미지에서 보듯이 plugins 폴더 내의 구조를 사용하고 계시며 문제가 발생하는 것으로 보아, 경로 문제일 가능성이 높습니다.

Airflow 설정과 환경 변수 등을 점검해 보시고, 필요하다면 common_func.py의 임포트 경로를 환경에 맞게 조정해 보시기 바랍니다.

방효석님의 프로필 이미지
방효석

작성한 질문수

질문하기