1장. AI 비전과 OpenCV 개발환경
개발환경의 짜임
집에 주방이 하나 있고, 그 주방에 요리마다 따로 쓰는 작업대가 있다고 해 봅시다. 빵을 굽는 작업대에는 밀대와 오븐 장갑을, 생선 요리 작업대에는 회칼을 올려 둡니다. 도구가 섞이지 않으니 한쪽을 바꿔도 다른 쪽에 탈이 나지 않습니다. 개발환경도 이렇게 짭니다.
그림의 큰 틀이 PC(집), 그 안의 상자가 파이썬(주방), 다시 그 안의 상자들이 가상환경(작업대)입니다. 가상환경마다 올려 둔 패키지(도구)가 다릅니다. 오른쪽의 VS Code 는 레시피를 적고 요리를 시작하는 공책이고, 보라 선은 VS Code 가 어느 작업대를 쓸지 고른다는 뜻입니다.
구성 요소
| 구성 요소 | 비유 | 하는 일 | 이 과정에서 |
|---|---|---|---|
| 파이썬(Python) | 주방 | 코드를 실행한다 | 3.12 이상 (교안은 3.14.6) |
| 가상환경(.venv) | 요리별 작업대 | 과목마다 패키지를 따로 담는다 | 과목 폴더 안의 .venv |
| 패키지(package) | 작업대 위의 도구 | 기능을 더한다 | opencv-python, numpy, matplotlib |
| pip | 도구 배달원 | 패키지를 내려받아 설치한다 | python -m pip install ... |
| VS Code | 레시피 공책 | 코드를 쓰고 실행한다 | 파이썬 확장을 깔아 쓴다 |
import sys
from pathlib import Path
# 지금 코드를 실행한 파이썬이 어느 작업대(가상환경)의 것인지 본다
print(sys.version.split()[0]) # 파이썬 버전
print(Path(sys.executable).parts[-3:]) # 파이썬 파일의 끝 세 칸
print(sys.prefix != sys.base_prefix) # True 면 가상환경 안에서 실행 중sys.executable 은 지금 실행 중인 파이썬 프로그램 파일의 위치입니다. executable 은 "실행할 수 있는 파일"이라는 뜻입니다. 가상환경을 쓰면 sys.prefix(가상환경 폴더)와 sys.base_prefix(원래 파이썬 폴더)가 달라집니다. prefix 는 "앞에 붙는 경로"라는 뜻입니다.
주의할 점
- 패키지를 설치한 가상환경과 VS Code 가 고른 파이썬이 다르면, 설치했는데도
No module named 'cv2'오류가 납니다. VS Code 오른쪽 아래의 파이썬 버전 표시를 눌러.venv를 고릅니다. - 가상환경 폴더(
.venv)는 다른 PC 로 복사해 쓰지 않습니다. 새 PC 에서는 새로 만들고 패키지를 다시 설치합니다.