Recent Posts
Recent Comments
Link
«   2025/04   »
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
Archives
Today
Total
관리 메뉴

나혼자 코딩

Python 모듈과 패키지 이해하기: import, from, as의 활용법 본문

카테고리 없음

Python 모듈과 패키지 이해하기: import, from, as의 활용법

python2ai 2025. 3. 24. 10:34

Python 프로젝트를 규모 있게 운영하거나 협업을 고려할 때, 모듈과 패키지의 개념은 필수적으로 이해해야 할 부분입니다. 이 글에서는 import, from, as 구문을 중심으로 모듈과 패키지의 기본 개념부터 실무 적용까지 단계별로 정리해보겠습니다.

모듈화 예시


1. 모듈(Module)이란?

모듈(Module)은 Python에서 재사용 가능한 코드 단위를 의미하며, .py 확장자를 가진 하나의 Python 파일입니다. 함수, 클래스, 변수 등을 정의해두고 다른 파일에서 import 하여 활용할 수 있도록 설계됩니다.

모듈을 사용하는 목적은 다음과 같습니다:

  • 코드를 논리적으로 분리하고 재사용 가능하게 만듦
  • 유지보수와 협업을 쉽게 함
  • 중복을 줄이고 코드 품질을 향상시킴

예시: math 모듈 사용하기

import math

print(math.sqrt(16))  # 출력: 4.0
print(math.pi)        # 출력: 3.141592...

모듈은 크게 표준 라이브러리 모듈, 외부 패키지 모듈, 사용자 정의 모듈로 구분됩니다. Python에는 수많은 표준 라이브러리 모듈이 존재합니다. 또한, 자신만의 .py 파일을 만들어 원하는 기능을 정의해두는 경우 다른 스크립트에서 import 하여 자유롭게 사용할 수 있습니다.


2. import와 from 구문의 차이

Python에서 모듈을 불러올 때 가장 많이 사용하는 방식은 importfrom입니다. 두 구문의 차이를 명확히 이해하면 가독성과 성능 모두를 챙길 수 있습니다.

import 구문

전체 모듈을 가져올 때 사용합니다.

import datetime
print(datetime.datetime.now())

from 구문

모듈 내에서 특정 항목만 선택적으로 가져올 수 있습니다.

from datetime import datetime
print(datetime.now())

비교 정리

구문 형태 설명 장점
import module 전체 모듈 가져오기 충돌 방지, 명확한 참조
from module import name 특정 요소만 가져오기 코드 간결화, 빠른 접근

3. as 키워드로 별칭 사용하기

as 키워드를 사용하면 모듈이나 함수에 짧고 직관적인 별칭(alias) 을 붙일 수 있습니다.

import pandas as pd
import numpy as np

df = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})
print(df)

별칭은 특히 외부 패키지 사용 시 코드의 길이를 줄이고, 협업 시 공통된 약속(alias convention) 으로 읽기 쉬운 코드를 만드는 데 유용합니다.


4. 표준 라이브러리 vs 외부 패키지

Python은 math, datetime, os, json 등 수백 개의 표준 라이브러리 모듈을 내장하고 있으며, 추가적으로 pandas, numpy, requests 등의 외부 패키지pip를 통해 설치하여 사용할 수 있습니다.

외부 패키지 설치 예시 (터미널)

pip install requests

 

설치 후 Python에서 import 하여 사용합니다:

import requests
response = requests.get("https://example.com")
print(response.status_code)

외부 패키지는 데이터 분석, 웹 개발, 머신러닝, 네트워크 처리 등 다양한 분야에서 핵심 도구로 사용됩니다.


5. __name__ == '__main__'의 의미

Python 모듈을 작성하다 보면, 종종 다음과 같은 코드를 보게 됩니다:

if __name__ == '__main__':
    main()

이 구문은 해당 Python 파일이 직접 실행되었는지, 아니면 다른 모듈에서 import 되었는지를 구분하는 조건입니다.

핵심 원리

Python은 스크립트를 실행할 때, 특수 변수 __name__을 자동으로 정의합니다.

  • 모듈이 직접 실행되는 경우: __name__ == '__main__'
  • 다른 모듈에 의해 import 되는 경우: __name__ == '모듈이름'

실무 활용 예시

def main():
    print("이 모듈은 단독 실행 중입니다.")

if __name__ == '__main__':
    main()

이 구조를 활용하면 다음과 같은 이점이 있습니다:

  • 모듈 재사용과 독립 실행이 모두 가능
  • 단위 테스트 또는 예제 실행 시 직접 실행 여부를 구분 가능
  • 협업 시 의도치 않게 실행되는 것을 방지함

이러한 패턴은 특히 라이브러리나 유틸리티 모듈을 작성할 때 필수적인 방어적 코드 구조입니다.

이는 모듈을 재사용할 수 있게 만들면서도, 독립 실행도 가능한 구조를 제공하는 Python의 핵심 기법입니다.


6. 실무에서의 모듈화 전략

Python 프로젝트가 커질수록 코드의 가독성과 유지보수성을 높이기 위해 모듈화(Modularization) 전략이 필수적입니다. 모듈화는 코드를 기능 단위로 논리적으로 분리하고, 각 구성 요소를 재사용성과 독립성 있게 설계하는 과정을 의미합니다.

모듈화 전략의 핵심 원칙

  1. 단일 책임 원칙 (SRP): 하나의 모듈은 하나의 명확한 역할만 담당해야 함
  2. 의존성 최소화: 모듈 간 결합도는 낮추고 응집도는 높인다
  3. 재사용성: 여러 프로젝트나 상황에서 모듈을 재활용 가능하게 구성

구조적 예시

my_project/
├── main.py                    # 실행 진입점
├── config.py                  # 설정값, 환경변수
├── utils/                     # 도우미 함수 모음
│   ├── __init__.py
│   ├── preprocessing.py       # 데이터 전처리 관련 함수
│   └── visualization.py       # 시각화 도구 함수
├── models/                    # 모델 구조 및 학습 코드
│   ├── __init__.py
│   └── regression.py
└── pipelines/                # 워크플로우 구성
    └── train_pipeline.py

실무 적용 팁

  • 공통 유틸리티는 utils 디렉토리에 통합
  • 외부 노출 대상은 __init__.py에 명시적으로 정의 (__all__ 활용)
  • 디렉토리 구조만으로도 프로젝트의 흐름이 한눈에 보이도록 설계

__init__.py 파일에는 무엇을 작성해야 할까?

__init__.py는 디렉토리를 Python 패키지로 인식시키는 파일로, Python 3.3 이상에서는 생략 가능하지만, 명시적으로 정의하는 것이 바람직합니다. 보통 다음과 같은 내용을 포함합니다:

  • 공개할 모듈 또는 함수/클래스 지정
__all__ = ['preprocessing', 'visualization']

from utils import \* 시 여기에 명시된 모듈만 import 됩니다.

  • 하위 모듈/클래스 import로 편의성 향상
from .preprocessing import clean_data
from .visualization import plot_chart

사용자가 utils.clean\_data()처럼 사용할 수 있도록 인터페이스 제공

  • 공통 상수, 버전 정보, 초기화 코드 등
VERSION = '1.0.0'
  • 초기화 작업 (예: 로깅, 설정 로딩)
import logging logging.basicConfig(level=logging.INFO)

 

이러한 모듈화 전략은 프로젝트의 확장성과 협업 생산성을 높이며, 유지보수에 드는 비용을 획기적으로 줄이는 핵심 기법입니다.


마무리

이번 글에서는 Python에서 모듈과 패키지를 어떻게 사용하는지, 그리고 import, from, as의 차이와 활용법까지 정리했습니다.

  • 모듈: 코드의 재사용 단위 (.py 파일)
  • 패키지: 모듈을 폴더 단위로 구성한 것
  • import/from/as: 다양한 방식으로 모듈 불러오기
  • __name__ == '__main__': 모듈의 실행 여부 구분
  • 모듈화 전략__init__.py 작성 방법

모듈화는 Python 프로젝트를 더욱 효율적이고 견고하게 설계하는 데 핵심 역할을 합니다.

실무에서의 코드 구성력을 높이기 위해 반드시 익혀야 할 중요한 요소입니다.