❓Python 온라인 강의로 예제를 공부하던 중, 외부 라이브러리 pytz를 사용하는 와중 에러 발생
import pytz
ModuleNotFoundError: No module named 'pytz'
Python version : 3.9.6
해당 오류는 pytz 모듈이 설치되어 있지 않아서 발생하는 문제
Python 버전에는 문제가 없고, 해당 라이브러리가 설치되어 있지 않아서 생기는 오류
❗해결 방법
- 터미널에서 명령어로 해결 : install pytz
- IntelliJ에서 설치 : Settings > Project > "프로젝트명" > Python Interperter > + > pytz 검색 후 install
📍추가
Python 3.9 부터는 표준 라이브러리로 zoneinfo를 제공하기 때문에 추가 설치 없이도 사용 가능
📍 pytz vs zoneinfo 비교
항목 | pytz | zoneinfo (Python 3.9 +) |
출시 | 오래됨 (3rd-party) | Python 3.9부터 표준 라이브러리 포함 |
설치 | pip intall pytz 필요 | 설치 불필요 (표준 라이브러리) |
타임존 데이터 | 자체적으로 내장한 타임존 DB 사용 | 시스템에 설치된 IANA 타임존 DB 사용 |
주요 차이점 | localize()를 반드시 써야 정확한 시간 변환 가능 | tzinfo 설정만 해도 정확히 작동 |
코드 간결성 | 다소 번거로움(localize, normalize) | 더 직관적이고 깔끔함 |
향후 방향 | 유지보수는 되지만 권장되느 않음 | Python 공식 권장 방식 |
예제
- pytz 방식
import datetime
import pytz
seoul_tz = pytz.timezone("Asia/Seoul")
# 잘못된 방식 (주의!)
dt = datetime.datetime(2025, 4, 8, 12, 0, 0)
print(dt.astimezone(seoul_tz))
# 올바른 방식
localized = seoul_tz.localize(dt)
print(localized)
- zoneinfo 방식
from datetime import datetime
from zoneinfo import ZoneInfo
dt = datetime(2025, 4, 8, 12, 0, 0, tzinfo=ZoneInfo("UTC"))
converted = dt.astimezone(ZoneInfo("Asia/Seoul"))
print(converted)
'개발 > Python' 카테고리의 다른 글
Scikit-Learn > fit(), transform() (0) | 2025.05.10 |
---|---|
DB > fetchmany, fetchone, fetchall (0) | 2025.04.27 |
🪄매직 메소드 __xxx__ (0) | 2025.04.17 |
🦭바다코끼리 연산자 (0) | 2025.04.13 |
string to boolean 형변환 (1) | 2025.04.09 |