## 가상환경이란? Python 가상환경은 프로젝트별로 독립된 Python 실행 환경을 제공하는 도구입니다. 다음과 같은 이점이 있습니다: - 프로젝트별로 독립된 패키지 환경 구성 가능 (의존성 충돌 방지) - 시스템에 설치된 기본 Python에 영향을 주지 않고 프로젝트마다 필요한 패키지만 설치 가능 - Python 버전을 프로젝트별로 다르게 설정 가능 > [!WARNING] > - 본 문서는 Windows 환경에서 Python venv를 사용한 가상환경 설정을 기준으로 작성되었습니다 > - Linux/Mac에서는 가상환경 활성화/비활성화 명령어가 다르며, 디렉토리 구조도 상이할 수 있습니다 > - PowerShell 대신 CMD(Command Prompt) 사용을 권장합니다. PowerShell에서는 권한 문제로 가상환경 생성이 실패할 수 있습니다 ## 1. 가상환경 생성 ### Python 버전 확인 ```bash py --list # 또는 py --list-paths ``` ### 가상환경 생성 가상환경 생성 명령어: ```bash py -3.12 -m venv venv ``` 대안: - 기본 Python 버전 사용: `python -m venv venv` 또는 `py -m venv venv` - 다른 버전 사용: `py -3.11 -m venv venv` (Python 3.11이 설치된 경우) - 새 버전 설치: Python 공식 웹사이트에서 다운로드 ### 생성 확인 ```bash dir venv ``` 정상적으로 생성된 경우 다음과 같은 디렉토리 구조가 보입니다: ``` venv/ ├── Include/ ├── Lib/ ├── Scripts/ └── pyvenv.cfg ``` ## 2. 가상환경 활성화 및 관리 ### 활성화 ```bash .\venv\Scripts\activate ``` ### 활성화 상태 확인 ```bash echo %VIRTUAL_ENV% ``` 활성화된 경우 가상환경 경로가 출력됩니다. 예시: `C:\Users\user\Desktop\langchain-chatbot\server\venv` ### pip 업그레이드 ```bash python -m pip install --upgrade pip ``` ## 3. 패키지 관리 ### 개별 패키지 설치 ```bash pip install [패키지이름] ``` ### 패키지 일괄 설치 의존성 패키지 목록을 텍스트 파일로 관리할 수 있습니다. 파일명은 프로젝트의 필요에 따라 자유롭게 지정할 수 있습니다: - packages.txt (기본) - packages_dev.txt (개발 환경용) - packages_prod.txt (운영 환경용) - packages_test.txt (테스트 환경용) packages.txt 예시: ```txt streamlit langchain faiss-cpu openai pymupdf langchain-openai langchain-community fastapi uvicorn[standard] ``` 패키지 일괄 설치: ```bash pip install -r packages.txt ``` ### 현재 환경 저장하기 지금 가상환경에 설치된 모든 패키지 목록을 저장할 수 있습니다: ```bash pip freeze > packages.txt ``` pip freeze 결과: ```txt streamlit==1.32.0 langchain==0.1.12 openai==1.13.0 pymupdf==1.24.0 ``` 특정 버전을 지정하지 않고 최신 버전을 설치하고 싶다면, ==버전넘버를 제거합니다: ```txt streamlit langchain openai pymupdf ``` ## 4. 가상환경 비활성화 가상환경 비활성화는 현재 사용 중인 가상환경에서 벗어나 시스템의 기본 Python 환경으로 돌아가는 것을 의미합니다. ```bash deactivate ``` 비활성화 확인 방법: 1. 터미널 프롬프트에서 `(venv)` 표시가 사라집니다. 2. `echo %VIRTUAL_ENV%` 명령어 실행 시 아무것도 출력되지 않습니다. 3. `where python` 명령어로 현재 사용 중인 Python 경로가 시스템 Python으로 변경된 것을 확인할 수 있습니다.