개발/python

파이썬 모듈과 패키지: import로 코드를 나누고 재사용하는 방법

notebase 2026. 5. 22. 10:17

파이썬 모듈과 패키지의 차이, import 사용법, 표준 라이브러리와 외부 패키지 설치 개념을 초보자 기준으로 정리합니다.

 

파이썬 모듈과 패키지는 코드를 여러 파일로 나누고 다시 가져와 쓰기 위한 구조입니다. 코드가 길어질수록 한 파일에 모든 내용을 넣기 어렵기 때문에, 기능별로 나누는 방법을 알아야 합니다.

처음에는 import가 낯설 수 있습니다. 하지만 핵심은 단순합니다. 이미 만들어둔 코드를 현재 파일에서 불러와 사용하는 것입니다.

모듈이란 무엇일까

파이썬에서 모듈은 보통 하나의 .py 파일을 의미합니다.

예를 들어 calculator.py라는 파일을 만들었다고 하겠습니다.

# calculator.py

def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

 

이 파일은 계산 기능을 담은 모듈로 볼 수 있습니다.

다른 파이썬 파일에서 이 모듈을 불러올 수 있습니다.

import calculator

print(calculator.add(3, 5))
print(calculator.subtract(10, 4))

 

실행 결과는 다음과 같습니다.

8
6

 

import calculatorcalculator.py 파일을 가져온다는 뜻입니다.

모듈 안의 함수를 사용할 때는 calculator.add()처럼 모듈 이름을 함께 붙입니다.

import 기본 사용법

가장 기본적인 import 방식은 다음과 같습니다.

import 모듈이름

 

예를 들어 파이썬에서 제공하는 math 모듈을 사용할 수 있습니다.

import math

print(math.sqrt(16))
print(math.pi)

 

실행 결과는 다음과 비슷합니다.

4.0
3.141592653589793

 

math.sqrt()는 제곱근을 구하는 함수입니다.

math.pi는 원주율 값을 나타냅니다.

from import 사용하기

모듈 전체가 아니라 특정 함수만 가져올 수도 있습니다.

from math import sqrt

print(sqrt(16))

 

이 경우에는 math.sqrt()가 아니라 바로 sqrt()라고 사용할 수 있습니다.

여러 개를 가져올 수도 있습니다.

from math import sqrt, pi

print(sqrt(25))
print(pi)

 

다만 가져오는 이름이 많아지면 어디에서 온 함수인지 헷갈릴 수 있습니다.

초보 단계에서는 import math처럼 모듈 이름을 붙여 사용하는 방식이 더 명확할 때가 많습니다.

as로 이름 줄이기

모듈 이름이 길거나 자주 사용할 때는 as로 별명을 붙일 수 있습니다.

import random as rd

print(rd.randint(1, 10))

 

random 모듈을 rd라는 이름으로 사용한 예입니다.

실무에서는 자주 쓰이는 별명이 있습니다.

import pandas as pd
import numpy as np

 

다만 처음 배울 때는 별명을 무리하게 쓰기보다 원래 이름으로 이해하는 것이 좋습니다.

표준 라이브러리란 무엇일까

파이썬은 설치할 때 기본으로 제공되는 모듈이 많습니다. 이를 표준 라이브러리라고 합니다.

대표적인 예는 다음과 같습니다.

모듈 용도
math 수학 계산
random 무작위 값 생성
datetime 날짜와 시간 처리
os 운영체제 관련 기능
sys 파이썬 실행 환경 관련 기능

 

예를 들어 무작위 숫자를 만들고 싶다면 random 모듈을 사용할 수 있습니다.

import random

number = random.randint(1, 6)
print(number)

 

1부터 6 사이의 정수가 무작위로 출력됩니다.

주사위 기능을 만들 때 사용할 수 있습니다.

직접 만든 모듈 사용하기

같은 폴더에 두 파일이 있다고 가정하겠습니다.

project/
├── main.py
└── greeting.py

 

greeting.py 파일에는 함수를 작성합니다.

# greeting.py

def hello(name):
    return name + "님, 안녕하세요"

 

main.py에서는 이 함수를 가져와 사용할 수 있습니다.

# main.py

import greeting

message = greeting.hello("민수")
print(message)

 

실행 결과는 다음과 같습니다.

민수님, 안녕하세요

 

이렇게 기능별로 파일을 나누면 코드 관리가 쉬워집니다.

패키지란 무엇일까

패키지는 여러 모듈을 묶어놓은 폴더 구조입니다.

예를 들어 다음과 같은 구조가 있을 수 있습니다.

my_package/
├── __init__.py
├── calculator.py
└── greeting.py

 

여기서 my_package는 패키지입니다.

그 안의 calculator.py, greeting.py는 모듈입니다.

패키지 안의 모듈을 사용할 때는 다음처럼 가져올 수 있습니다.

from my_package import calculator

print(calculator.add(3, 5))

 

패키지는 코드가 많아졌을 때 기능별로 정리하는 데 유용합니다.

초보 단계에서는 “모듈은 파이썬 파일, 패키지는 모듈을 담는 폴더”라고 이해하면 됩니다.

__init__.py는 무엇일까

패키지 예제에서 __init__.py 파일이 보였을 것입니다.

이 파일은 해당 폴더를 파이썬 패키지로 인식하게 하는 역할을 해왔습니다.

최근 파이썬에서는 일부 경우 __init__.py가 없어도 패키지처럼 동작할 수 있습니다. 하지만 초보 단계에서는 패키지 폴더에 __init__.py를 두는 방식으로 익히는 것이 이해하기 쉽습니다.

처음에는 파일 내용이 비어 있어도 괜찮습니다.

# __init__.py

 

외부 패키지란 무엇일까

파이썬에는 기본 제공 모듈 외에도 다른 개발자들이 만든 패키지를 설치해서 사용할 수 있습니다.

예를 들어 웹 요청을 쉽게 처리하는 requests, 데이터 분석에 자주 쓰이는 pandas 같은 패키지가 있습니다.

외부 패키지는 보통 pip 명령어로 설치합니다.

pip install requests

 

설치한 뒤에는 파이썬 코드에서 import해서 사용할 수 있습니다.

import requests

 

다만 외부 패키지를 설치하는 명령은 터미널이나 명령 프롬프트에서 실행합니다. 파이썬 코드 파일 안에 직접 쓰는 코드가 아닙니다.

import할 때 자주 하는 실수

1. 파일 이름을 표준 모듈과 같게 짓기

예를 들어 파일 이름을 random.py로 만들면 파이썬의 표준 random 모듈과 충돌할 수 있습니다.

random.py

 

이런 이름은 피하는 것이 좋습니다.

my_random_test.py처럼 더 구체적인 이름을 사용하면 충돌을 줄일 수 있습니다.

2. 모듈 이름에 하이픈 사용하기

파이썬 파일 이름에 하이픈을 사용하면 import하기 어렵습니다.

my-module.py

 

이보다는 밑줄을 사용하는 것이 좋습니다.

my_module.py

 

3. 설치하지 않은 외부 패키지를 import하기

import requests

 

이 코드는 requests가 설치되어 있어야 동작합니다.

설치되어 있지 않다면 ModuleNotFoundError가 발생합니다.

이럴 때는 터미널에서 패키지를 설치해야 합니다.

pip install requests

 

모듈을 나누는 기준

처음부터 파일을 너무 많이 나눌 필요는 없습니다.

코드가 짧을 때는 하나의 파일로도 충분합니다.

하지만 아래와 같은 상황이라면 모듈 분리를 생각해볼 수 있습니다.

  • 같은 함수가 여러 파일에서 필요할 때
  • 한 파일이 너무 길어져서 읽기 어려울 때
  • 계산, 입력, 출력, 설정 같은 역할을 나누고 싶을 때
  • 프로젝트 구조를 정리하고 싶을 때

모듈은 코드를 더 복잡하게 만드는 도구가 아니라, 복잡해진 코드를 정리하기 위한 도구입니다.

정리

파이썬 모듈은 하나의 .py 파일입니다. 패키지는 여러 모듈을 담은 폴더 구조입니다.

import를 사용하면 다른 파일이나 파이썬이 제공하는 기능을 현재 코드에서 사용할 수 있습니다.

초보 단계에서는 먼저 import math, import random 같은 표준 라이브러리 사용법부터 익히는 것이 좋습니다. 이후 직접 만든 파일을 모듈로 불러오고, 코드가 많아지면 패키지 구조로 나누면 됩니다.