파이썬 가상환경과 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를 선택해 주시면 됩니다.
다음 글 예고
여기까지 따라오셨으면 변수부터 데코레이터, 그리고 환경 세팅까지 다 갖춘 거예요. 사실 지금까지 배운 걸 잘 합치면 작은 프로그램 하나 정도는 충분히 만들 수 있거든요.
다음 글에서는 진짜로 그걸 해볼 거예요. 학생 성적 관리 프로그램을 작은 미니 프로젝트로 같이 만들어 봅니다. 리스트랑 딕셔너리, 함수, 파일 입출력까지 한꺼번에 쓰는 거니까, 그동안 배운 게 어떻게 맞물려 돌아가는지 감이 확 잡히실 거예요.
제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀
'Application > Python' 카테고리의 다른 글
| [Python] 파이썬 데코레이터: 함수를 꾸며주는 마법 (@ 기호의 정체) (0) | 2026.05.15 |
|---|---|
| [Python] 파이썬 람다와 map filter, 한 줄 함수로 코드 짧게 쓰는 법 (0) | 2026.05.14 |
| [Python] 파이썬 리스트 컴프리헨션, 코드 한 줄로 줄이는 마법 (0) | 2026.05.13 |
| [Python] 파이썬 상속과 오버라이딩, 클래스를 또 만들지 마세요 (1) | 2026.05.12 |
| [Python] 파이썬 생성자(__init__) 쉽게 이해하기 (0) | 2026.05.11 |