🔥 파이썬 패키지 이해 및 구조

440자
7분

파이썬은 그 유연성과 사용 편의성으로 많은 개발자들에게 사랑받는 프로그래밍 언어입니다. 특히, 파이썬의 패키지와 모듈 시스템은 코드의 재사용성과 관리를 효율적으로 만들어 줍니다. 이 장에서는 파이썬 패키지의 기본적인 이해와 그 구조에 대해 자세히 알아보겠습니다.

파이썬 패키지의 이해

파이썬 패키지는 모듈의 모음입니다. 모듈은 파이썬 코드가 작성된 파일을 의미하며, 이러한 모듈들이 폴더 형태로 구성되어 패키지를 형성합니다. 패키지 내에서는 서로 다른 기능의 모듈들이 상호작용하며, 이를 통해 더 크고 복잡한 프로그램을 구축할 수 있습니다.

예를 들어, math 패키지는 수학과 관련된 다양한 모듈을 포함하고 있으며, 사용자는 import math를 통해 이를 활용할 수 있습니다.

import math
 
print(math.sqrt(16))  # 4.0 출력
 
python

패키지의 구조

파이썬 패키지는 폴더와 비슷한 구조를 가집니다. 각 폴더는 하나의 패키지를 나타내며, __init__.py 파일이 해당 폴더가 패키지임을 파이썬에 알립니다. 이 파일은 비어 있을 수도 있고, 패키지 초기화 코드를 포함할 수도 있습니다.

mypackage/
    __init__.py
    submodule1.py
    submodule2.py
text

위 구조에서 mypackage는 패키지이며, submodule1submodule2는 이 패키지의 모듈입니다.

패키지의 설치와 사용

파이썬에서 패키지를 사용하기 위해서는 먼저 해당 패키지를 설치해야 합니다. 대부분의 파이썬 패키지는 pip라는 패키지 관리자를 통해 설치할 수 있습니다.

예를 들어, 유명한 HTTP 라이브러리인 requests를 설치하려면 다음과 같이 실행합니다.

pip install requests
 
shell

설치 후에는 import 문을 사용하여 패키지를 불러올 수 있습니다.

import requests
 
response = requests.get("https://www.google.com")
print(response.status_code)  # 200 출력
 
python

패키지 내부에서의 모듈 접근

패키지 내부의 모듈은 점(.)을 사용하여 접근할 수 있습니다. 예를 들어, mypackage 내부의 submodule1을 사용하고 싶다면 다음과 같이 작성합니다.

import mypackage.submodule1
 
mypackage.submodule1.some_function()
 
python

또는 특정 함수나 클래스만을 직접 가져올 수도 있습니다.

from mypackage.submodule1 import some_function
 
some_function()
 
python

__init__.py의 역할

앞서 언급했듯이, __init__.py 파일은 해당 디렉토리가 파이썬 패키지의 일부임을 나타냅니다. 이 파일은 패키지가 임

포트될 때 실행되며, 패키지 초기화 코드를 포함할 수 있습니다. 예를 들어, 패키지를 임포트할 때 특정 모듈을 자동으로 불러오게 할 수 있습니다.

# mypackage/__init__.py
from . import submodule1
 
python

이렇게 설정하면 import mypackage를 수행하면 자동으로 submodule1도 임포트됩니다.

상대적 임포트

패키지 내부에서 다른 모듈을 임포트할 때는 상대적 임포트를 사용할 수 있습니다. 이는 현재 모듈의 위치에 상대적인 경로를 사용하여 다른 모듈을 임포트하는 방식입니다.

# mypackage/submodule2.py
from .submodule1 import some_function
 
python

여기서 .은 현재 모듈과 같은 디렉토리를 의미합니다.

네임스페이스 패키지

네임스페이스 패키지는 __init__.py 파일이 없는 특별한 종류의 패키지입니다. 이를 통해 여러 디렉토리에 걸쳐있는 모듈을 하나의 패키지처럼 사용할 수 있습니다. 네임스페이스 패키지는 동적으로 생성되며, 특정 디렉토리에 구속되지 않습니다.

연습문제

  1. 새로운 파이썬 패키지를 생성하고, 최소 두 개의 모듈을 포함시킨 후 각 모듈에서 함수를 하나씩 정의하고, 이를 메인 스크립트에서 임포트하여 사용하는 예제를 작성하세요.
  2. pip를 사용하여 외부 패키지를 설치하고, 해당 패키지의 함수를 사용하는 간단한 예제 코드를 작성하세요.
  3. __init__.py 파일을 사용하여 패키지 초기화 시 특정 모듈을 자동으로 임포트하는 예제를 만드세요.
  4. 상대적 임포트를 사용하는 예제를 작성하세요.
  5. 네임스페이스 패키지의 개념을 설명하고, 간단한 예제를 통해 이를 실습해 보세요.