[파이썬] Relative Import와 Absolute Import의 사용 스타일

Python은 모듈 형태의 코드 재사용을 지원하는 강력한 프로그래밍 언어입니다. 모듈을 임포트하여 다른 파일에서 작성된 코드를 사용할 수 있으며, 이를 통해 코드의 재사용성과 유지 보수성을 높일 수 있습니다. Python에서는 주로 상대적 임포트(Relative Import)절대적 임포트(Absolute Import)를 사용하여 모듈을 가져옵니다. 이 블로그 포스트에서는 두 가지 임포트 스타일의 차이점과 각각의 사용에 대해 알아보겠습니다.

Relative Import의 사용 스타일

상대적 임포트는 현재 작업 중인 코드 파일과 동일한 디렉토리 내에 있는 모듈을 가져오는 방법입니다. 이는 코드 파일이 특정 프로젝트 또는 패키지의 일부로 작성되었을 때 유용합니다. 상대적 임포트는 ...을 이용하여 현재 디렉토리의 상위 디렉토리를 참조할 수 있습니다.

from .module_name import function_name or class_name
from ..package_name import module_name

이렇게 상대적 임포트를 사용하면 코드를 쉽게 이동하거나 프로젝트에 새로운 모듈을 추가할 때 상대 경로만 변경하면 됩니다. 하지만 주의해야 할 점은 모듈이 패키지 내의 하위 디렉토리에 있어야만 한다는 제약사항입니다. 그리고 상대 임포트 사용 시에는 해당 모듈이 __init__.py가 존재하는 패키지 내부에 위치해야 합니다.

Absolute Import의 사용 스타일

절대적 임포트는 코드 파일이 위치한 디렉토리가 아닌 프로젝트의 루트 디렉토리에서 모듈을 가져오는 방법입니다. 이는 여러 프로젝트 사이에 공통 모듈을 공유하거나 패키지 간의 의존성을 관리할 때 유용합니다. 절대적 임포트는 프로젝트 내에 설치된 패키지를 참조하므로, 모듈이 패키지 내부에 위치하지 않아도 됩니다.

from package_name.module_name import function_name or class_name

이렇게 절대적 임포트를 사용하면 모듈이 어디에 위치하든 간에 모듈을 쉽게 임포트할 수 있습니다. 이는 모듈을 다른 프로젝트로 옮길 때 유용하며, 파일 시스템의 구조가 변경되어도 코드를 수정하지 않아도 됩니다.

어떤 스타일을 사용해야 할까요?

Relative Import와 Absolute Import 중 어떤 스타일을 사용해야 하는지는 프로젝트나 개발 환경에 따라 다를 수 있습니다. 상대적 임포트는 패키지나 하위 디렉토리 내의 모듈을 참조할 때 편리하며, 프로젝트 구조가 단순할 때 유용합니다. 하지만 여러 프로젝트나 패키지 간에 코드를 공유하거나 모듈을 임포트할 때는 절대적 임포트를 사용하는 것이 좋습니다. 절대적 임포트를 사용하면 코드의 이동이나 프로젝트 구조의 변경에 관계없이 모듈을 쉽게 임포트할 수 있습니다.

따라서, 프로젝트의 특성과 요구사항에 따라 적절한 임포트 스타일을 선택하여 사용하면 됩니다.

결론적으로, Relative Import와 Absolute Import는 애플리케이션 내 모듈 임포트에 유용한 방법입니다. 이러한 임포트 스타일을 제대로 이해하고 적절하게 사용하면 모듈 간의 결합도를 낮추고 유지 보수성을 높일 수 있습니다.