
안녕하세요! 파이썬 입문 시리즈 3편입니다. 오늘은 초보자들이 가장 많이 헷갈려하지만, 반드시 알아야 할 개념인 파이썬 가상환경(venv)에 대해 알아볼 거예요.
“가상환경이 뭐예요?”, “왜 써야 해요?”, “그냥 pip install 하면 안 되나요?” 이런 질문들, 정말 많이 받아요. 저도 처음에 똑같은 의문을 가졌거든요.
오늘 이 글을 끝까지 읽으시면, 가상환경이 왜 필요한지 완벽하게 이해하고, 직접 만들어서 사용할 수 있게 될 거예요!
✅ 가상환경이 뭔지 쉽게 이해하기
✅ 가상환경이 없으면 생기는 문제 (실제 사례)
✅ 가상환경 만들고, 켜고, 끄는 방법
✅ 패키지 설치 및 관리하기
✅ requirements.txt로 환경 공유하기
✅ 자주 하는 실수와 해결법
가상환경이란? 쉬운 비유로 이해하기
가상환경을 한 마디로 설명하면 “프로젝트 전용 독립된 방”이에요.
비유를 들어볼게요. 여러분이 요리사라고 상상해 보세요.
🍳 요리사 비유: 가상환경 없이 일하는 상황
주방이 하나밖에 없어요. 이탈리안 레스토랑, 일식당, 중식당 요리를 모두 이 하나의 주방에서 해야 해요.
문제가 생깁니다. 이탈리안 요리에는 올리브오일이 필요한데, 일식에는 참기름이 필요해요. 그런데 같은 자리에 두 기름을 놓으니 자꾸 헷갈리고 잘못 집어요.
더 큰 문제도 있어요. 이탈리안 요리에는 바질 1.0 버전(어린 바질)이 필요한데, 중식에는 바질 2.0 버전(성숙한 바질)이 필요해요. 하나의 주방에는 한 종류의 바질만 있을 수 있으니, 둘 중 하나는 포기해야 해요.
🍳 가상환경을 쓰면?
주방을 3개로 분리합니다! 이탈리안 전용 주방, 일식 전용 주방, 중식 전용 주방.
각 주방에는 해당 요리에 필요한 재료만 딱 갖춰놓아요. 서로 섞이지 않으니 헷갈릴 일도 없고, 각 요리에 맞는 버전의 재료를 사용할 수 있어요!
파이썬으로 돌아와서
파이썬에서도 똑같아요. 여러분이 두 개의 프로젝트를 진행한다고 해볼게요:
프로젝트 A (회사 레거시 시스템): Django 3.0이 필요해요
프로젝트 B (개인 사이드 프로젝트): Django 4.2가 필요해요
가상환경 없이 pip install django를 하면, 컴퓨터에는 Django 하나만 설치돼요. 3.0을 설치했다가 4.2를 설치하면 3.0은 사라지고 4.2로 덮어씌워져요.
결국 하나의 프로젝트는 망가지게 됩니다.
ModuleNotFoundError: No module named 'django'ImportError: cannot import name 'xxx' from 'django'AttributeError: module 'numpy' has no attribute 'xxx'이런 에러가 났다면, 99%는 라이브러리 버전 문제예요!
가상환경 없이 겪는 실제 문제 사례
제가 실제로 겪었던 일이에요. 초보 시절에 가상환경을 몰라서 엄청 고생했어요.
🔥 사례 1: “어제까지 됐는데 왜 안 돼요?”
웹 크롤링 프로젝트를 진행하고 있었어요. requests 라이브러리를 사용해서 잘 돌아가던 코드였어요.
다음 날, 다른 프로젝트를 시작하면서 pip install requests --upgrade를 실행했어요. 최신 버전으로 업그레이드한 거죠.
그런데 갑자기 어제까지 잘 되던 크롤링 코드가 에러를 뿜기 시작했어요. 새 버전에서 일부 함수 사용법이 바뀌었던 거예요.
🔥 사례 2: “내 컴퓨터에선 되는데 서버에서 안 돼요”
열심히 만든 프로젝트를 서버에 배포했어요. 근데 에러가 나요.
원인을 찾아보니, 제 컴퓨터에는 pandas 1.5가 설치되어 있는데 서버에는 pandas 1.3이 설치되어 있었어요. 버전이 다르니까 코드가 안 돌아간 거예요.
가상환경과 requirements.txt를 썼다면, 이런 문제를 예방할 수 있었어요.
🔥 사례 3: “라이브러리 지우다가 시스템 망가뜨림”
필요 없는 라이브러리를 정리하려고 pip uninstall을 마구 실행했어요.
그런데 그 라이브러리가 다른 라이브러리의 의존성이었던 거예요. 결국 다른 프로젝트까지 다 망가졌어요.
가상환경을 썼다면, 해당 프로젝트 폴더만 지우면 깔끔하게 정리됐을 거예요.
• 프로젝트마다 다른 버전의 라이브러리 사용 가능
• 라이브러리 충돌 걱정 없음
• 프로젝트 삭제 시 관련 라이브러리도 깔끔하게 정리
• 다른 사람/서버에 동일한 환경 쉽게 전달 가능
가상환경 만들기: 완전 쉬운 3단계
이제 실제로 가상환경을 만들어볼게요. 정말 쉬워요!
1프로젝트 폴더로 이동
먼저 프로젝트를 진행할 폴더로 이동하세요.
# 새 폴더 만들고 이동
mkdir my_project
cd my_project
2가상환경 생성
python -m venv 가상환경이름 명령어로 만들어요.
# 가상환경 생성 (venv라는 이름으로)
python -m venv venv
보통 이름을 venv 또는 env로 많이 지어요. 다른 이름도 가능해요.
3가상환경 활성화
운영체제마다 명령어가 달라요!
# Windows (cmd)
venv\Scripts\activate
# Windows (PowerShell)
venv\Scripts\Activate.ps1
# Mac / Linux
source venv/bin/activate
활성화에 성공하면, 터미널 앞에 (venv)가 표시돼요!
Windows PowerShell에서 스크립트 실행 정책 때문에 에러가 날 수 있어요.
해결법: PowerShell을 관리자 권한으로 실행 후 아래 명령어 입력:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser또는 그냥 cmd(명령 프롬프트)를 사용하세요. 더 간단해요!
가상환경에서 패키지 설치하기
가상환경이 활성화된 상태에서 pip install을 하면, 해당 가상환경에만 설치돼요.
# 가상환경 활성화 확인 (앞에 (venv) 표시되어야 함)
(venv) C:\my_project>
# 패키지 설치
(venv) C:\my_project> pip install requests
(venv) C:\my_project> pip install django==4.2
(venv) C:\my_project> pip install pandas numpy matplotlib
설치된 패키지 확인하기
# 현재 가상환경에 설치된 모든 패키지 보기
(venv) C:\my_project> pip list
# 결과 예시:
Package Version
---------- -------
django 4.2
requests 2.31.0
pandas 2.0.3
numpy 1.24.3
특정 버전 설치하기
버전을 지정해서 설치할 수도 있어요. 이게 가상환경의 핵심 장점이에요!
# 특정 버전 설치
pip install django==3.2.0
# 최소 버전 지정
pip install django>=4.0
# 버전 범위 지정
pip install django>=3.0,<4.0
requirements.txt: 환경 저장하고 공유하기
팀원과 협업하거나 서버에 배포할 때, 똑같은 라이브러리 환경을 만들어야 해요. 이때 requirements.txt를 사용해요.
현재 환경 저장하기
# 현재 설치된 모든 패키지를 requirements.txt에 저장
(venv) C:\my_project> pip freeze > requirements.txt
이렇게 하면 requirements.txt 파일이 생겨요. 열어보면 이런 내용이 있어요:
# requirements.txt 내용
django==4.2
requests==2.31.0
pandas==2.0.3
numpy==1.24.3
matplotlib==3.7.1
requirements.txt로 환경 복원하기
다른 컴퓨터나 서버에서 똑같은 환경을 만들 때:
# 새 가상환경 만들고 활성화
python -m venv venv
venv\Scripts\activate
# requirements.txt에 있는 모든 패키지 한 번에 설치
(venv) C:\my_project> pip install -r requirements.txt
끝! 완벽하게 같은 환경이 만들어져요.
1. 프로젝트 시작할 때
requirements.txt 만들기2. 새 패키지 설치할 때마다
pip freeze > requirements.txt 실행3. Git에
requirements.txt는 커밋하고, venv 폴더는 .gitignore에 추가!
가상환경 명령어 총정리
여기까지 배운 명령어를 한눈에 정리할게요. 이 표만 저장해두면 언제든 참고할 수 있어요!
| 작업 | Windows (cmd) | Mac / Linux |
|---|---|---|
| 가상환경 생성 | python -m venv venv |
python3 -m venv venv |
| 활성화 | venv\Scripts\activate |
source venv/bin/activate |
| 비활성화 | deactivate |
deactivate |
| 패키지 설치 | pip install 패키지명 |
pip install 패키지명 |
| 패키지 목록 보기 | pip list |
pip list |
| 환경 저장 | pip freeze > requirements.txt |
pip freeze > requirements.txt |
| 환경 복원 | pip install -r requirements.txt |
pip install -r requirements.txt |
| 가상환경 삭제 | venv 폴더 삭제 | rm -rf venv |
초보자가 자주 하는 실수 5가지
❌ 실수 1: 가상환경 활성화 안 하고 pip install
(venv)가 표시 안 된 상태에서 pip install하면 전역에 설치돼요!
C:\my_project> pip install django ← (venv) 없음 = 전역 설치!
(venv) C:\my_project> pip install django ← (venv) 있음 = 가상환경에 설치!
❌ 실수 2: venv 폴더를 Git에 올림
venv 폴더는 용량도 크고, 운영체제마다 다르게 생성돼요. Git에 올리면 안 돼요!
# .gitignore 파일에 추가
venv/
env/
.venv/
__pycache__/
❌ 실수 3: 프로젝트마다 같은 이름의 가상환경 사용
가상환경 이름은 보통 venv로 동일하게 짓지만, 각 프로젝트 폴더 안에 따로 만들어야 해요!
# 올바른 구조
📁 project_A/
📁 venv/ ← project_A 전용
📄 main.py
📁 project_B/
📁 venv/ ← project_B 전용
📄 app.py
❌ 실수 4: requirements.txt 업데이트 안 함
새 패키지를 설치하고 pip freeze를 안 하면, 나중에 환경 복원이 안 돼요!
# 새 패키지 설치할 때마다 실행!
pip install 새패키지
pip freeze > requirements.txt
❌ 실수 5: 가상환경 폴더 이름에 공백 사용
폴더 이름에 공백이 있으면 활성화할 때 에러 나요.
# ❌ 잘못된 예
python -m venv my venv
# ✅ 올바른 예
python -m venv my_venv
python -m venv myvenv
실전 연습: 가상환경으로 간단한 프로젝트 만들기
배운 내용을 직접 따라 해보세요! 5분이면 끝나요.
Step 1: 프로젝트 폴더 생성
mkdir my_first_venv_project
cd my_first_venv_project
Step 2: 가상환경 생성 및 활성화
python -m venv venv
venv\Scripts\activate
Step 3: 패키지 설치
(venv) pip install requests
Step 4: 간단한 코드 작성
VS Code로 test.py 파일을 만들고 아래 코드를 입력하세요:
# test.py
import requests
response = requests.get("https://api.github.com")
print(f"GitHub API 상태: {response.status_code}")
print(f"응답 헤더 일부: {response.headers['content-type']}")
Step 5: 실행
(venv) python test.py
GitHub API 상태: 200이 나오면 성공이에요!
Step 6: 환경 저장
(venv) pip freeze > requirements.txt
마무리: 다음 시리즈 미리 보기
오늘 파이썬 가상환경(venv)에 대해 완벽하게 배웠어요!
이제 여러분은 프로젝트마다 독립된 환경을 만들 수 있고, 라이브러리 충돌 걱정 없이 개발할 수 있어요. 팀원이나 서버와 동일한 환경을 공유하는 방법도 알게 됐고요!
다음 포스트에서는 깃허브(GitHub) 회원가입부터 저장소 생성까지를 다룰 예정입니다. 개발자라면 반드시 알아야 할 Git과 GitHub의 기초를 배워볼 거예요.
시리즈를 계속 따라오시려면 블로그를 구독해 주세요!
1. 가상환경 = 프로젝트 전용 독립된 공간
2.
python -m venv venv로 생성3.
venv\Scripts\activate로 활성화 (Windows)4.
pip freeze > requirements.txt로 환경 저장5.
pip install -r requirements.txt로 환경 복원6. venv 폴더는 Git에 올리지 않기!
이 글이 도움이 되셨다면 좋아요나 공유 부탁드려요. 댓글로 질문해 주시면 답변 드릴게요. 다음에 또 만나요!