콘텐츠로 건너뛰기

파이썬 상대 임포트의 쉬운 사용법과 수정 방법

[

Python 상대 임포트

파이썬은 모듈과 패키지를 사용하여 코드를 구성할 수 있습니다. 다른 모듈 또는 패키지의 코드에 액세스해야하는 경우에는 이를 가져와야 합니다. 이번 튜토리얼에서는 파이썬의 절대 임포트와 상대 임포트에 대해 배워보겠습니다. 이 두 가지의 차이점과 각각의 장단점에 대해서 알아봅시다. 바로 알아보겠습니다.

임포트에 대한 간략한 복습

하나의 모듈에 있는 코드가 다른 모듈 또는 패키지의 코드에 액세스해야하는 경우 어떻게 해야 할까요? 이를 임포트하면 됩니다!

임포트의 작동 방식

하지만 정확히 임포트는 어떻게 작동할까요? 예를 들어, abc 모듈을 다음과 같이 임포트한다고 가정해 보겠습니다.

import abc

먼저 파이썬은 sys.modules에 있는 모든 모듈의 캐시를 확인합니다. 이 캐시에 이름 abc가 없는 경우, 파이썬은 내장 모듈 목록을 검색합니다. 이는 파이썬과 함께 미리 설치된 모듈들이며 파이썬 표준 라이브러리에서 찾을 수 있습니다. 그래도 이름을 찾을 수 없으면, 파이썬은 sys.path에 정의된 디렉토리 목록에서 찾습니다. 이 목록에는 일반적으로 현재 디렉토리도 포함되며, 이 디렉토리가 먼저 검색됩니다.

파이썬이 모듈을 찾으면, 해당 모듈을 로컬 범위에 바인딩합니다. 이는 abc가 정의되었으며 현재 파일에서 NameError가 발생하지 않고 사용될 수 있다는 것을 의미합니다.

하나의 이름도 찾지 못하면, ModuleNotFoundError가 발생합니다. 임포트에 대해서 더 자세히 알아보려면 파이썬 문서를 참조해보세요.

참고: 보안에 대한 인식

파이썬의 임포트 시스템은 어떤 별개의 보안 위험을 가지고 있습니다. 이것은 주로 그 유연성 때문입니다. 예를 들어, 모듈 캐시는 쓰기 가능하며, 임포트 시스템을 사용하여 핵심 파이썬 기능을 무효화하는 것이 가능합니다. 타사 패키지에서의 임포트는 애플리케이션을 보안 위협에 노출시킬 수도 있습니다.

이와 관련하여 더 자세히 알아보고 어떻게 이러한 보안 위험을 완화할 수 있는지에 대해 알아볼 수 있는 재미있는 자료 몇 가지를 소개합니다:

여기에서는 파이썬의 절대 임포트와 상대 임포트에 대해 알아봤습니다. 임포트의 작동 방식에 대한 이해와 이 두 가지 방법의 차이점을 파악하는 것은 코드를 잘 구성하고 유지 관리하기 위해 매우 중요합니다. 이해한 내용을 토대로 개발 작업에 활용해보세요. 임포트는 파이썬 프로젝트에서 빼놓을 수 없는 중요한 개념입니다.