# Advanced Python
# Python: .venv란?
## 1. 개요
`.venv`는 Python의 ****가상 환경(Virtual Environment)**** 을 구성하기 위해 생성되는 ****프로젝트 전용 디렉터리****입니다.
Python 3.3부터 내장된 `venv` 모듈을 통해 생성되며, 각 프로젝트마다 독립된 Python 실행 환경과 패키지 저장소를 제공합니다.
> ✅ 목적: ****패키지 격리****
> → 프로젝트 간 의존성 충돌을 방지
---
## 2. 왜 `.venv`를 사용해야 할까?
항목
| 전역 설치
| `.venv` 사용 시
|
---|
패키지 위치
| 시스템 전체 (
`site-packages`
)
| 프로젝트 내부
`.venv/Lib`
등
|
프로젝트 간 버전 충돌 가능성
| ❌ 높음
| ✅ 격리됨
|
협업 시 재현성
| ❌ 낮음
| ✅
`requirements.txt`
로 복제 가능
|
삭제/재생성의 유연성
| ❌ 전역에 영향
| ✅ 폴더 삭제로 완전 초기화 가능
|
Git 관리
| ❌ 위험
| ✅
`.gitignore`
로 제외 가능
|
📌 전역 Python 환경은 ****시스템 툴, 다른 프로젝트****에 영향을 줄 수 있으므로 ****가상 환경을 사용하는 것이 표준 개발 방식****입니다.
---
## 3. .venv 설정 및 사용법 (VS Code 기준)
---
### 3.1 가상 환경 생성
```bash
python -m venv .venv
```
- `.venv/` 폴더가 생성되며, 구조는 다음과 같음:
```text
.venv/
├── Scripts/ (Windows) 또는 bin/ (Mac/Linux)
│ ├── activate
│ ├── python.exe
├── Lib/ (패키지 설치 공간)
├── pyvenv.cfg
```
---
### 3.2 가상 환경 활성화
OS
| 명령어
|
---|
Windows
| `.venv\Scripts\activate`
|
macOS/Linux
| `source .venv/bin/activate`
|
- 활성화되면 프롬프트에 `(venv)`와 같이 표시됨
---
### 3.3 패키지 설치 (가상 환경 내부에서만 작동)
```bash
pip install requests
```
- 설치된 패키지는 ****전역이 아니라 .venv 내부****에 저장됨
---
### 3.4 가상 환경 비활성화
```bash
deactivate
```
- 현재 세션에서 `.venv` 연결이 해제됨
---
## 4. VS Code에서 `.venv` 자동 인식 설정
---
### 4.1 Python 확장 설치
- ****단축키****: `Ctrl + Shift + X` → "Python" 검색 후 설치
---
### 4.2 인터프리터 직접 선택
- VSCode 하단 상태바 > Python 인터프리터 클릭
- `.venv` 내부의 Python 실행 파일 선택
OS
| 경로 예시
|
---|
Windows
| `.venv\Scripts\python.exe`
|
macOS/Linux
| `.venv/bin/python`
|
---
### 4.3 `.vscode/settings.json` 자동 설정
```json
{
"python.defaultInterpreterPath": ".venv\\Scripts\\python.exe"
}
```
→ 저장 시 `.venv`가 자동으로 선택됨
---
## 5. `requirements.txt`로 패키지 목록 관리
---
### 5.1 현재 환경 저장
```bash
pip freeze > requirements.txt
```
- 현재 `.venv`에 설치된 모든 패키지 + 버전이 저장됨
---
### 5.2 환경 재구성 (다른 PC에서 실행)
```bash
pip install -r requirements.txt
```
- ****똑같은 버전으로 환경을 재구성**** 가능 (협업 시 필수)
---
## 6. Git 관리 시 주의사항
- `.venv/` 디렉터리는 ****절대 Git에 포함시키지 말 것****
- `.gitignore`에 아래 내용 추가:
```text
.venv/
```
📌 가상 환경은 ****재생성 가능****한 자원이므로, 소스 코드 저장소에 올릴 필요가 없음
---
## ✅ 요약 정리
항목
| 내용
|
---|
사용 목적
| 프로젝트별 패키지 독립성 확보
|
생성 명령어
| `python -m venv .venv`
|
활성화
| Windows:
`.\.venv\Scripts\activate`
|
비활성화
| `deactivate`
|
설치 위치
| `.venv/Lib/site-packages`
등
|
VSCode 자동 인식
| `settings.json`
에서
`"python.defaultInterpreterPath"`
설정
|
패키지 리스트 저장
| `pip freeze > requirements.txt`
|
공유 환경 복원
| `pip install -r requirements.txt`
|
---