Application/Python

[Python] 파이썬 가상환경과 pip 완벽 정리 (Windows 기준)

devsalix 2026. 5. 19. 08:43
728x90

파이썬 가상환경과 pip 완벽 정리 (Windows 기준)

지난 글 마무리에서 외부 라이브러리 본격적으로 쓰기 전에 환경부터 정리하자고 말씀드렸잖아요. 오늘이 바로 그 얘기예요.

혹시 이런 경험 있으세요? 인터넷에서 본 예제 따라 하려고 pip install을 막 했다가, 나중에 다른 프로젝트에서 같은 라이브러리 다른 버전이 필요해서 꼬여본 경험. 저도 처음엔 그거 모르고 컴퓨터 한 대에 이것저것 다 깔다가, 어디서 뭐가 충돌하는지 추적이 안 돼서 결국 파이썬을 통째로 재설치했던 적이 있어요.

이런 사고를 막아주는 게 바로 가상환경입니다.


파이썬 가상환경이 도대체 뭔가요

쉽게 말하면 프로젝트마다 따로 쓰는 칸막이 책상이에요.

책상 A에는 A 프로젝트 도구만 올려두고, 책상 B에는 B 프로젝트 도구만 올려둡니다. 책상끼리 안 섞이니까 한쪽에서 뭘 하든 다른 쪽에 영향이 없어요. 가상환경도 똑같아요. 환경 하나당 자기만의 파이썬과 자기만의 패키지 폴더를 따로 가져요.

이게 왜 좋냐면요.

  • A 프로젝트는 django 3.x, B 프로젝트는 django 4.x — 같은 컴퓨터에서 충돌 없이 굴릴 수 있어요
  • 실수로 이상한 패키지 깔아도 그 환경 폴더만 지우면 끝이에요
  • 다른 사람한테 "이 환경 그대로 재현해 줘"라고 넘기기도 쉬워요

venv로 파이썬 가상환경 만들기

파이썬 3.3 이상이면 venv라는 게 기본으로 들어 있어요. 따로 설치 안 해도 됩니다.

먼저 프로젝트 폴더로 이동해서 가상환경을 만들어 볼게요.

# 프로젝트 폴더로 이동
cd C:\Users\내이름\projects\myproject

# venv 라는 이름의 가상환경 만들기
python -m venv venv

 

python -m venv venv 명령에서 뒤에 있는 venv가 환경 폴더 이름이에요. 보통 그냥 venv 또는 .venv로 짓는 게 관례입니다. 다 만들면 프로젝트 폴더 안에 venv 폴더가 새로 생겨요.


가상환경 활성화하기 (Windows 기준)

만들기만 하면 끝이 아니고, 활성화를 해야 그 환경 안으로 들어갑니다.

venv\Scripts\Activate.ps1

 

성공하면 프롬프트 앞에 (venv)가 붙어요. 이렇게요.

(venv) PS C:\Users\내이름\projects\myproject>

 

(venv) 표시, 정말 중요해요. 이게 떠 있어야 지금 가상환경 안에 있는 거거든요. 안 떠 있으면 전역 파이썬에서 작업 중인 거고요. 작업 끝나고 빠져나올 땐 deactivate 한 줄이면 됩니다.


PowerShell 실행 정책 오류, 거의 다 한 번씩 만나요

위 활성화 명령을 처음 치면 십중팔구 이런 빨간 메시지가 뜹니다.

Activate.ps1 : 이 시스템에서 스크립트를 실행할 수 없으므로 ...

 

저도 처음 봤을 땐 "내가 뭘 잘못했지" 싶어서 당황했는데요, Windows가 보안상 스크립트 실행을 기본으로 막아둬서 그래요. PowerShell 창에서 한 줄만 실행하면 해결됩니다.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

 

RemoteSigned는 "내 컴퓨터에서 만든 스크립트는 그냥 실행, 인터넷에서 받은 건 서명된 것만 실행"이라는 뜻이에요. 안전한 수준이니까 안심하고 적용하셔도 됩니다. 한 번만 해두면 다음부터는 안 물어봐요.


python pip 기본 명령어 정리

이제 환경 안으로 들어왔으니 패키지를 깔아 볼게요. pip은 파이썬 패키지를 설치해 주는 도구예요. 앱스토어 같은 거라고 생각하시면 됩니다.

pip install requests          # 설치
pip install requests==2.31.0  # 특정 버전 설치
pip uninstall requests        # 삭제
pip list                      # 설치된 목록 보기
pip show requests             # 패키지 상세 정보

 

진짜 한번 써볼게요. requests는 인터넷에서 데이터를 가져올 때 쓰는 유명한 라이브러리예요. 파이썬 기본 내장이 아니라서 pip으로 깔아야만 import가 됩니다.

# weather.py
import requests

response = requests.get("https://httpbin.org/get")
print(response.status_code)  # 200이면 성공
print(response.json())       # 응답을 JSON으로 받기

 

터미널에서 이렇게 돌리면요.

(venv) PS C:\...> pip install requests
(venv) PS C:\...> python weather.py
200
{'args': {}, 'headers': {...}, ...}

 

200이 뜨면 인터넷 너머의 서버랑 진짜로 대화한 거예요. 이게 외부 라이브러리 처음 써보는 맛입니다.


파이썬 패키지 설치 후 requirements.txt 만들기

혼자 작업할 땐 상관없는데, 다른 사람이랑 코드 공유하거나 나중에 다른 컴퓨터에서 같은 환경을 다시 만들어야 할 때가 와요. 그때 쓰는 게 requirements.txt예요. 일종의 준비물 목록이라고 보시면 돼요.

pip freeze > requirements.txt

 

이러면 지금 환경에 깔린 패키지가 버전까지 같이 텍스트 파일로 저장돼요.

requests==2.31.0
certifi==2024.2.2
charset-normalizer==3.3.2
...

 

이 파일을 받은 사람은 자기 가상환경 만들고 이 한 줄만 치면 똑같은 환경이 재현됩니다.

pip install -r requirements.txt

 

참고로 PowerShell에서 pip freeze > requirements.txt 하면 가끔 파일이 UTF-16으로 저장돼서 깨질 때가 있어요. 이럴 땐 메모장으로 열어서 UTF-8로 다시 저장하시면 됩니다.

자주 하는 실수들

처음에 다들 비슷한 데서 막히시더라고요.

1. 활성화 안 하고 pip install(venv) 표시 없이 그냥 install하면 전역 파이썬에 깔려요. 다른 프로젝트까지 오염됩니다. 깔기 전에 프롬프트부터 한 번 보세요.

2. 새 터미널 열면 다시 활성화 — PowerShell 창을 닫았다 다시 열면 가상환경도 같이 꺼져요. 새 창에서는 항상 다시 activate해 줘야 합니다.

3. ModuleNotFoundError: No module named 'requests' — 분명 깔았는데 import가 안 될 때요. 90%는 활성화를 안 했거나 다른 환경에서 깔아서예요. pip list로 진짜 그 환경에 있는지 확인해 보세요.

4. VS Code에서 인터프리터 선택 안 함 — 터미널은 가상환경인데 코드 실행은 글로벌 파이썬으로 되는 경우가 있어요. Ctrl+Shift+P → "Python: Select Interpreter" → 만든 venv를 선택해 주시면 됩니다.


다음 글 예고

여기까지 따라오셨으면 변수부터 데코레이터, 그리고 환경 세팅까지 다 갖춘 거예요. 사실 지금까지 배운 걸 잘 합치면 작은 프로그램 하나 정도는 충분히 만들 수 있거든요.

다음 글에서는 진짜로 그걸 해볼 거예요. 학생 성적 관리 프로그램을 작은 미니 프로젝트로 같이 만들어 봅니다. 리스트랑 딕셔너리, 함수, 파일 입출력까지 한꺼번에 쓰는 거니까, 그동안 배운 게 어떻게 맞물려 돌아가는지 감이 확 잡히실 거예요.


 


제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀

 

 
728x90