지금 돌아가는 파이썬, 몇 버전인지 알고 쓰시나요?

Tasker_Jang·2026년 4월 19일

🤔 이게 왜 문제인가

"파이썬 설치돼 있으니까 그냥 python script.py 치면 되겠지"라고 생각하고 실행했는데, 동료가 짠 코드에서 print("hello")는 되는데 f-string이 문법 에러를 뿜는 상황. 아니면 로컬에서는 잘 돌던 스크립트가 서버에 올리니까 dict.items()의 순서가 꼬이는 일. 이런 미스터리의 범인은 대부분 파이썬 버전 불일치입니다.

특히 요즘은 Python 2는 거의 사라졌지만, Python 3 안에서도 3.8, 3.10, 3.12가 동시에 설치돼 있는 환경이 흔합니다. match 문(3.10+)이나 tomllib(3.11+) 같은 신기능을 썼다가 구버전 서버에서 터지는 사고, 한 번쯤은 겪게 됩니다.

💣 흔한 실수

# 터미널에서 그냥 python이라고 치고 실행
# "내 컴퓨터의 python이 뭔지는 모르지만 일단 돌려봐야지"
python my_script.py

어떤 python이 실행될지는 OS와 PATH 설정에 따라 다릅니다. macOS에서는 시스템 파이썬이 잡힐 수도 있고, 회사 장비에서는 3.8이, 개인 노트북에서는 3.12가 잡힐 수도 있어요. 같은 코드인데 환경마다 다르게 동작하면 디버깅 지옥이 열립니다.

✅ 파이썬다운 방법

import sys

# 사람이 읽기 좋은 형태
print(sys.version)
# 3.12.1 (main, Dec  8 2023, 18:20:22) [Clang 15.0.0 ...]

# 코드로 분기할 때 쓰기 좋은 형태
print(sys.version_info)
# sys.version_info(major=3, minor=12, micro=1, releaselevel='final', serial=0)

# 버전별 분기가 필요할 때
if sys.version_info >= (3, 10):
    # match 문 사용
    ...
else:
    raise RuntimeError("Python 3.10 이상이 필요합니다")

sys.version은 문자열이라 로깅이나 디버깅에 좋고, sys.version_info는 네임드 튜플이라 >= 비교가 바로 됩니다. 중요한 건 "내 컴퓨터에 뭐가 깔려 있지"가 아니라 "지금 이 프로세스가 무슨 버전으로 실행되고 있지"를 확인하는 것입니다. 커맨드라인에서는 python --version 대신 python -c "import sys; print(sys.version)"로 확인하는 습관이 더 정확합니다.

📎 기억할 것

  • python 명령어가 어떤 버전을 가리키는지는 환경마다 다르니 sys.version_info로 프로세스 내부에서 직접 확인하세요.
  • Python 2는 공식 지원이 끝났습니다. 새 프로젝트는 무조건 Python 3로 시작하시는 것이 좋습니다.
  • 최신 기능을 쓸 때는 sys.version_info >= (3, X) 체크로 명시적으로 최소 버전을 선언하면 좋습니다.
  • pyproject.tomlrequires-python에도 최소 버전을 박아두면 설치 단계에서 걸러집니다.

🛠 실무에서 어디 쓸까

CI 파이프라인 스크립트 맨 위에 assert sys.version_info >= (3, 11), "Python 3.11+ required" 한 줄 넣어두면, 나중에 팀원이 구버전 로컬에서 돌리다 엉뚱한 에러로 시간 낭비하는 걸 막을 수 있습니다. 또 Docker 이미지를 만들 때 FROM python:3.12-slim처럼 태그를 고정해두고, 컨테이너 시작 시점에 버전을 로그로 찍어두면 "어제까지 되던 게 왜 안 되지?" 디버깅이 훨씬 빨라집니다.

profile
ML Engineer 🧠 | AI 모델 개발과 최적화 경험을 기록하며 성장하는 개발자 🚀 The light that burns twice as bright burns half as long ✨

0개의 댓글