목록으로

프로그래밍 · Python

Python 완전정복 시리즈 18: 모듈과 패키지로 수천 개 코드 관리하기

BeanCon
Python 모듈과 패키지로 대규모 코드를 체계적으로 정리하는 방법을 설명하는 대표 이미지

Python 완전정복 시리즈 18편입니다. 하나의 Python 파일인 모듈, 관련 모듈을 묶는 패키지, import와 from import의 의미, 표준 라이브러리와 pip, 실무 프로젝트 구조와 초보자가 자주 겪는 파일명 충돌까지 정리했습니다.

🕵️ 사건 발생! 10만 줄짜리 Python 파일의 저주

어느 날.

당신은 회사에 입사한 지 3개월 된 Python 개발자입니다.

팀장님이 다급하게 부릅니다.

"긴급 수정 건이 들어왔어요!"

당신은 자신 있게 대답합니다.

"어디 수정하면 되나요?"

팀장님이 파일 하나를 열어줍니다.

파일명

main.py

파일 크기

127,843 Line

당신

😨

스크롤을 내립니다.

계속 내립니다.

아직도 끝이 안 보입니다.

5분 후

아직도 스크롤 중...

10분 후

여전히 함수 찾는 중...

그 순간 깨닫습니다.

"이건 프로그램이 아니라 미로잖아!"

1. 프로그래머들의 오래된 고민

초기 개발자들은

모든 코드를 하나의 파일에 작성했습니다.

예시

login()
logout()
register()
send_email()
payment()
chat()
notification()
inventory()
ai()

프로젝트가 커질수록

1,000줄
10,000줄
50,000줄
100,000줄

그리고 결국

아무도 관리할 수 없는 괴물이 됩니다.

2. 현실 세계를 떠올려 보자

만약 도서관이 있다고 가정합시다.

책 100만 권이 있습니다.

그런데 모든 책을

하나의 방에 쌓아놓았습니다.

찾아보세요.

Python 입문서

몇 시간 걸릴까요?

아마 며칠 걸릴 수도 있습니다.

그래서 도서관은

분류를 합니다.

IT
역사
경제
소설
과학

그리고 다시 세부 분류

IT
 ├ Python
 ├ Java
 ├ JavaScript
 └ Linux

Python도 똑같습니다.

3. 모듈(Module)이란?

모듈은

하나의 Python 파일입니다.

예를 들어

계산기 기능을 만들었다고 가정합시다.

파일명

calculator.py

내용

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

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

이것이 모듈입니다.

Python 파일 = 모듈

4. 모듈 불러오기

이제 main.py에서 사용해봅시다.

import calculator

사용

print(
    calculator.add(10, 20)
)

결과

30

마치 다른 파일에 있는 직원을 호출하는 것과 같습니다.

5. 회사 조직도로 이해하기

회사

개발팀
운영팀
보안팀
인사팀

각 팀은

자기 업무만 담당합니다.

Python도 마찬가지

auth.py
payment.py
chat.py
user.py

각 파일이

각자의 역할을 수행합니다.

6. import의 진짜 의미

많은 초보자가

import

를 단순 문법이라고 생각합니다.

사실은

"다른 팀에 업무 요청"

과 같습니다.

import payment

의 의미

"결제팀 도움 좀 주세요"

7. 필요한 것만 가져오기

전체 팀을 부를 필요는 없습니다.

from calculator import add

사용

print(add(10, 20))

이제

calculator.add()

를 쓰지 않아도 됩니다.

8. 패키지(Package)의 등장

그런데 프로젝트가 더 커집니다.

쇼핑몰 서비스

auth.py
login.py
register.py
user.py
profile.py
password.py

파일 수

500개

또 다시 혼란 시작

😱

그래서 등장한 것이

Package입니다.

9. 패키지는 폴더다

예시

project/

 ├ auth/
 │   ├ login.py
 │   ├ register.py
 │   └ profile.py

 ├ payment/
 │   ├ card.py
 │   ├ transfer.py
 │   └ refund.py

 └ chat/
     ├ room.py
     └ message.py

모듈은 파일

패키지는 폴더

이렇게 기억하면 됩니다.

10. 대기업 프로젝트 구조 체험

실제 서비스

amazon/

내부

payment/
product/
customer/
order/
notification/
analytics/
ai/

실제로 수천 개의 파일이 존재합니다.

패키지가 없다면?

개발자는 매일 길을 잃습니다.

11. 실무에서 보는 import

예를 들어

payment/card.py

안의 함수 사용

from payment.card import pay

사용

pay()

실제 업무에서도

매일 사용하는 패턴입니다.

12. Python 표준 라이브러리도 패키지다

여러분이 이미 사용했던

import random
import os
import math

사실 모두 모듈입니다.

Python은 기본적으로

수백 개의 모듈을 제공합니다.

마치

Python 공구 상자

같은 개념입니다.

13. pip가 왜 필요한가?

어느 날

AI 개발을 하게 됩니다.

import pandas
import numpy
import tensorflow

없다고 나옵니다.

왜?

설치하지 않았기 때문입니다.

pip install pandas

pip는

Python 앱스토어

같은 역할을 합니다.

14. ChatGPT도 모듈 천국이다

만약 ChatGPT를 만든다면?

chat/
model/
memory/
search/
image/
voice/
security/
billing/

모두 별도 패키지로 분리됩니다.

그렇지 않다면

수천만 줄의 코드가

하나의 파일에 들어가야 합니다.

😱

15. 초보자가 가장 많이 하는 실수

파일명 충돌

random.py

파일 생성

import random

문제 발생

Python이

내 파일을 불러올지

기본 random 모듈을 불러올지

헷갈립니다.

import *

from math import *

가능은 하지만

실무에서는 거의 사용하지 않습니다.

어디서 온 함수인지

알기 어렵기 때문입니다.

16. 모듈과 패키지를 이해한 개발자

초보 프로젝트

main.py

모든 기능

하나의 파일

6개월 후

main.py

50,000줄

유지보수 지옥

🔥

숙련 개발자

project/

 ├ auth/
 ├ payment/
 ├ user/
 ├ api/
 ├ db/
 ├ service/

기능별 정리

협업 가능

확장 가능

17. 프로그래밍 세계의 LEGO

레고를 생각해 봅시다.

부품을

한 상자에 넣어두면

필요한 조각 찾기

매우 어렵습니다.

하지만

바퀴 상자
창문 상자
문 상자
지붕 상자

분류하면

엄청 편해집니다.

모듈과 패키지도

똑같습니다.

18. 오늘 배운 내용을 한 문장으로 정리하면

모듈(Module)은

"하나의 기능을 담은 Python 파일"

패키지(Package)는

"관련 모듈을 모아놓은 폴더"

그리고

둘은 대규모 프로젝트를 가능하게 만드는 핵심 도구입니다.

19. 당신은 이제 중급 개발자의 문턱에 섰다

변수

조건문

반복문

함수

클래스

상속

다형성

지금까지는

코드를 "작성"하는 방법을 배웠습니다.

모듈과 패키지부터는

코드를 "관리"하는 방법을 배우게 됩니다.

실제 회사에서는

코드 작성보다

코드 관리가 더 중요해지는 순간이 옵니다.

🚀 다음 편 예고

다음 시간에는

"[Python 완전정복 시리즈 #19] JSON 완벽 이해하기 | 웹 API와 AI가 사랑하는 데이터 형식"

을 배워보겠습니다.

ChatGPT,

Claude,

Gemini,

REST API,

MongoDB,

Elasticsearch까지...

현대 IT 시스템을 연결하는 공용 언어 JSON의 세계로 들어가 보겠습니다.

댓글

0

댓글을 불러오는 중입니다.