모듈(Module) 은 각종 변수, 함수, 클래스를 담고 있는 파이썬 파일(.py) 입니다. 패키지(Package) 는 여러 모듈을 묶어놓은 디렉토리 단위입니다.
📦 mypackage/ ← 패키지 (디렉토리)
├── __init__.py
├── math_utils.py ← 모듈 (파일)
└── string_utils.py ← 모듈 (파일)
내장 함수만으로는 한계가 있기 때문에, 파이썬은 표준 라이브러리와 서드파티 패키지를 통해 다양한 기능을 제공합니다.
# 모듈 가져오기
import math
import os, sys # 여러 모듈은 콤마로 구분
# 모듈.변수, 모듈.함수() 형식으로 사용
print(math.pi) # 3.141592653589793
print(math.sqrt(16)) # 4.0
print(os.getcwd()) # 현재 작업 디렉토리
모듈 이름이 길거나 자주 쓰는 경우 별칭을 붙여 사용할 수 있습니다.
import numpy as np # numpy를 np로 사용
import pandas as pd # pandas를 pd로 사용
arr = np.array([1, 2, 3])
df = pd.DataFrame({'a': [1, 2, 3]})
모듈에서 필요한 것만 골라서 가져올 수 있습니다. 이렇게 하면 모듈. 없이 바로 사용할 수 있습니다.
# 특정 함수/변수만 가져오기
from math import pi, sqrt
print(pi) # 3.141592653589793 (math. 없이 바로 사용)
print(sqrt(25)) # 5.0
# 별칭 지정도 가능
from math import sqrt as sq
print(sq(9)) # 3.0
# 모든 것 가져오기 (* 사용 — 권장하지 않음)
from math import *
print(sin(0)) # 0.0
⚠️
from 모듈 import *는 어떤 이름이 가져와지는지 파악하기 어렵고 이름 충돌이 발생할 수 있어 권장하지 않습니다. 필요한 것만 명시적으로 가져오는 것이 좋습니다.
패키지 안의 모듈도 import로 가져올 수 있습니다. .을 사용해서 패키지와 모듈을 구분합니다.
# 패키지.모듈 형식으로 가져오기
import urllib.request
response = urllib.request.urlopen('https://example.com')
# as로 별칭 지정
import urllib.request as req
response = req.urlopen('https://example.com')
# from import로 모듈 일부만 가져오기
from urllib.request import urlopen
response = urlopen('https://example.com')
| 방식 | 예시 | 사용법 | 특징 |
|---|---|---|---|
import 모듈 | import math | math.sqrt() | 명시적, 충돌 없음 |
import 모듈 as 별칭 | import numpy as np | np.array() | 긴 이름 단축 |
from 모듈 import 이름 | from math import sqrt | sqrt() | 필요한 것만 가져옴 |
from 모듈 import 이름 as 별칭 | from math import sqrt as sq | sq() | 이름 충돌 방지 |
from 모듈 import * | from math import * | sqrt() | ⚠️ 권장하지 않음 |
파이썬 표준 라이브러리 외에도 파이썬 패키지 인덱스(PyPI, Python Package Index) 를 통해 수십만 개의 외부 패키지를 사용할 수 있습니다. pip는 PyPI의 패키지를 관리하는 명령어로, 파이썬 설치 시 기본으로 포함되어 있습니다.
<# 패키지 설치
pip install requests
# 특정 버전 설치
pip install requests==2.28.0
# 패키지 삭제
pip uninstall requests
# 설치된 패키지 목록 확인
pip list
# 패키지 정보 확인
pip show requests
설치한 패키지는 바로 import해서 사용할 수 있습니다.
# pip install requests 설치 후 사용
import requests
response = requests.get('https://api.example.com/data')
print(response.status_code) # 200