
1. 기본 개요
파이썬 공식 문서(Python 3 Tutorial, "6. Modules")에 따르면, 모듈(module)은 파이썬 정의와 문장들을 담고 있는 파일을 의미하며, 파일 이름에서 .py를 뺀 것이 모듈 이름이 됩니다. 모듈을 사용하면 코드를 여러 파일로 나누어 관리하고, import 문으로 다른 파일에서 그 기능을 불러와 재사용할 수 있습니다.
import math
print(math.sqrt(16))
패키지(package)는 여러 모듈을 디렉터리 구조로 묶은 것입니다. 공식 문서는 패키지가 "점(.)으로 구분된 모듈 이름 공간을 구조화하는 방법"이라고 설명합니다. 예를 들어 사운드.효과.반향처럼 하위 패키지 구조를 만들 수 있습니다.
한편 pip은 파이썬 표준 라이브러리에 포함되지 않은 외부(서드파티) 패키지를 설치하기 위한 패키지 관리자입니다. Python Packaging Authority(PyPA)가 관리하는 pip 공식 문서에 따르면, pip은 PyPI(Python Package Index)라는 공개 저장소에서 패키지를 내려받아 설치합니다.
pip install requests
2. 기능과 스펙
모듈 관련 주요 기능
import 모듈명: 모듈 전체를 불러오기from 모듈명 import 함수명: 모듈 안의 특정 이름만 불러오기import 모듈명 as 별칭: 불러오는 이름을 다른 이름으로 바꾸기dir(모듈명): 모듈이 정의한 이름 목록 확인
패키지 관련 주요 요소
__init__.py: 해당 디렉터리를 패키지로 인식시키는 파일(파이썬 3.3 이상에서는 이 파일이 없어도 네임스페이스 패키지로 동작 가능)- 상대 임포트(relative import): 같은 패키지 내 다른 모듈을
.,..같은 상대 경로로 불러오는 방식
pip 관련 주요 기능
pip install 패키지명: 패키지 설치pip install 패키지명==버전: 특정 버전 설치pip uninstall 패키지명: 패키지 제거pip freeze: 현재 환경에 설치된 패키지와 버전 목록 출력, 흔히requirements.txt생성에 사용pip install -r requirements.txt: 파일에 명시된 패키지들을 한 번에 설치
가상환경(virtual environment)과 pip을 함께 사용하는 것이 실무 표준 관행으로 널리 알려져 있으며, 파이썬 공식 문서의 "12. Virtual Environments and Packages" 챕터에서도 프로젝트별로 독립된 패키지 환경을 구성할 것을 권장하고 있습니다.
3. 장단점
장점
- 모듈과 패키지를 사용하면 큰 프로그램을 기능 단위로 나누어 관리할 수 있어 유지보수가 쉬워진다
- pip을 통해 수십만 개의 검증된 오픈소스 라이브러리를 즉시 활용할 수 있어 개발 속도가 크게 향상된다
requirements.txt를 활용하면 다른 개발자나 배포 환경에서 동일한 패키지 구성을 재현할 수 있다
단점
- 가상환경 없이 시스템 전역에 pip으로 패키지를 설치하면, 서로 다른 프로젝트 간 버전 충돌이 발생하기 쉽다
- PyPI는 개방형 저장소이기 때문에, 이름이 비슷한 악성 패키지(타이포스쿼팅)를 실수로 설치할 위험이 존재한다
- 패키지 간 의존성이 복잡해지면 특정 버전 조합에서만 정상 동작하는 "의존성 지옥(dependency hell)" 문제가 발생할 수 있다
개인적 견해 및 비판: 파이썬 입문자들이 가장 먼저 겪는 실무형 문제 중 하나가 가상환경 없이 무작정 pip install을 반복하다가, 나중에 다른 프로젝트를 시작했을 때 패키지 버전 충돌로 애를 먹는 경우입니다. 개인적으로는 파이썬을 배우는 첫 단계부터 venv나 conda 같은 가상환경 도구를 습관화하는 것이, 문법 자체를 배우는 것 못지않게 중요한 실무 역량이라고 생각합니다. 또한 PyPI에 누구나 패키지를 올릴 수 있다는 개방성은 파이썬 생태계의 큰 장점이지만, 동시에 검증되지 않은 패키지를 설치할 때는 다운로드 수, 최신 업데이트 여부, 공식 저장소 링크 등을 확인하는 최소한의 습관이 필요하다고 봅니다.
4. 추천 대상
- 여러 개의
.py파일로 프로젝트를 구조화하려는 초·중급 개발자 - 외부 라이브러리(예:
requests,pandas,numpy)를 활용해 실전 프로젝트를 진행하는 개발자 - 협업 환경에서 동일한 개발 환경을 재현해야 하는 팀 프로젝트 참여자
5. FAQ
Q1. 모듈과 패키지의 차이는 무엇인가요?
모듈은 하나의 .py 파일을 의미하고, 패키지는 여러 모듈을 담은 디렉터리 구조를 의미합니다. 패키지 안에는 여러 모듈이 포함될 수 있습니다.
Q2. pip과 conda의 차이는 무엇인가요?
pip은 PyPI에서 파이썬 패키지를 설치하는 도구이고, conda는 Anaconda 생태계에서 파이썬 패키지뿐 아니라 비(非)파이썬 의존성(C 라이브러리 등)까지 함께 관리할 수 있는 패키지·환경 관리자입니다. 이 둘의 세부 기능 차이는 각 도구의 공식 문서를 통해 추가로 확인하는 것이 정확합니다.
Q3. requirements.txt는 꼭 있어야 하나요?
필수는 아니지만, 프로젝트에 필요한 패키지와 버전을 명시해두면 다른 사람이나 배포 서버에서 동일한 환경을 손쉽게 재현할 수 있어 실무에서는 사실상 표준 관행으로 자리잡고 있습니다.
6. 출처
- Python 공식 문서, "6. Modules", https://docs.python.org/3/tutorial/modules.html
- Python 공식 문서, "12. Virtual Environments and Packages", https://docs.python.org/3/tutorial/venv.html
- pip 공식 문서(PyPA), "Installing Packages", https://pip.pypa.io/en/stable/