2.5 파이썬 가상환경(Virtual Environment)
학습목표: 파이썬 가상환경이 왜 필요한지 이유를 쉽게 이해하고, 프로젝트마다 독립적인 방을 만들어 충돌 없이 패키지를 관리하는 방법을 배웁니다.
1. 가상환경은 왜 필요할까요?
“가상환경은 파이썬 버전을 여러 개 설치할 때 유용한 것 아닌가요? 요즘은 버전 충돌 문제가 덜하지 않나요?” 라고 질문할 수 있습니다. 반은 맞고 반은 틀립니다!
파이썬 언어 자체의 하위 호환성은 많이 개선되었지만, 현업에서 가장 치명적인(빈번한) 충돌은 파이썬 자체가 아니라 내가 설치하는 ‘외부 패키지(라이브러리 부품)’들 사이에서 발생합니다. 파이썬으로 이런저런 숙제를 한다고 상상해 봅시다.
- 숙제 A (구형 웹서버): 옛날 부품인
Django 버전 2.0이 필요함. - 숙제 B (최신 AI 분석): 오늘 나온 최신 로봇 부품
Pandas 버전 2.0과Django 버전 4.0이 필요함.
만약 내 컴퓨터 거실(전역 환경, Global) 한군데에 이 모든 부품들을 마구잡이로 설치(pip install)하면 어떻게 될까요? 최신 Django를 까는 순간 숙제 A의 옛날 Django가 덮어씌워지며 엉망진창이 되고, 수많은 패키지들끼리 거미줄처럼 얽혀 의존성 에러(Dependency Hell)를 뿜어냅니다!
이를 막기 위해 부품들을 거실 한가운데 두지 않고, 숙제마다 각자의 ‘격리된 작은 방(가상환경)’을 따로 만들어 파이썬 실행 파일과 그 방만의 전용 패키지(부품)들을 보관하는 것이 가상환경의 가장 중요한 진짜 핵심입니다.
2. 가상환경 만들기 (venv)
파이썬에는 venv라는 기본 방 짓기 도구가 내장되어 있습니다. 터미널(명령 프롬프트)을 열고 아래 순서대로 따라오세요.
- 먼저, 내 숙제가 있는 폴더로 터미널 명령어를 통해 이동합니다.
- 아래 명령어로
myenv라는 이름의 새로운 작은 방을 만듭니다. (방 이름은 마음대로 지어도 됩니다!)python -m venv myenv(맥/리눅스는
python대신python3 -m venv myenv이라고 치세요)
3. 가상환경 방으로 들어가기 (활성화 하기)
방을 다 만들었으니 이제 문을 열고 들어가서 코딩을 해야겠죠?
- 윈도우(Windows) 터미널이라면:
myenv\Scripts\activate - 맥(Mac) / 리눅스 터미널이라면:
source myenv/bin/activate
문을 열고 들어가 성공하면, 글자를 치는 입력 줄 맨 앞에 (myenv) 처럼 방 이름이 초록색(혹은 괄호)으로 귀엽게 붙게 됩니다! 성공! 🎉
4. 가상환경 방에서 나오기 (비활성화 하기)
숙제가 끝나서 방 불을 끄고 거실로 다시 나오고 싶다면, 정말 간단한 명령어 딱 한 줄만 치면 됩니다.
deactivate
입력 후 엔터를 치면, 맨 앞에 붙어있던 (myenv) 이름표 문패가 뿅 하고 사라지게 됩니다.
5. 가상환경 목록 확인하기 (어떤 방들이 있나?)
내 컴퓨터의 이 폴더에 어떤 가상환경 방들이 만들어져 있는지 확인하고 싶을 때가 있습니다. 가상환경은 파이썬이 특별하게 따로 숨겨놓은 것이 아니라, ‘단순히 방 이름과 똑같은 폴더 하나’가 생성된 것에 불과합니다.
따라서 터미널에서 폴더 목록을 보는 짧은 명령어 하나면 가상환경의 존재를 바로 확인할 수 있습니다.
- 윈도우(Windows) 터미널 (명령 프롬프트/PowerShell):
dir(목록 중에 내가 방금 만든
myenv라는 폴더가 보인다면 잘 만들어진 것입니다!) - 맥(Mac) / 리눅스 터미널:
ls따로 관리 도구를 쓰지 않는다면, 이렇게 눈으로 직접 디렉토리(폴더)를 확인하는 것이 가장 직관적이고 쉬운 방법입니다.
6. 가상환경 삭제하기 (방 없애기)
“가상환경은 프로그램 추가/제거에서 삭제하나요?” 많은 초보자들이 묻지만, 정답은 “아닙니다” 입니다. 앞서 살펴보았듯, 파이썬 가상환경은 100% ‘폴더(디렉토리) 기반’으로만 생성되고 관리됩니다.
따라서 가상환경 방을 완전히 부수고(삭제하고) 싶다면 시스템 설정에 들어갈 필요 없이, 단순히 해당 가상환경 이름의 폴더를 통째로 휴지통에 버리면 끝입니다.
-
윈도우 탐색기(혹은 맥의 Finder) 사용: 해당 폴더(예:
myenv)를 우클릭해서 ‘삭제’를 누르면 모든 것이 완벽하게 사라집니다. -
터미널 명령어 사용:
- 윈도우(명령 프롬프트):
rmdir /s /q myenv - 맥/리눅스:
rm -rf myenv
- 윈도우(명령 프롬프트):
⚠️ 주의사항: 삭제하기 전에 현재 그 방 안에 들어가 있는 상태(이름표 (myenv)가 떠 있는 상태)라면, 반드시 먼저 deactivate 명령어로 방에서 빠져나온 뒤에 폴더를 지워야 시스템 에러를 막을 수 있습니다.
💡 핵심 요약 가이드:
전문가들은 새로운 코딩 프로젝트를 시작할 때 무조건 폴더를 만들자마자 제일! 먼저! 가상환경 ‘방’부터 만듭니다. 나중의 큰 에러를 막아주는 생명줄이니 꼭 습관을 들이세요!