LangChain 챗봇환경설정← 이전목차다음 →MetaContents

시작 전에

환경설정

Windows 11 PC 에서 VS Code 와 Python 으로 실습합니다. 작업 폴더(이 교안의 예시는 C:\chatbot-course)를 하나 정해 그 안에 가상환경을 만들고, 실습에 필요한 패키지를 그 안에 설치합니다. 장이 늘어나면 그 장에서 새로 쓰는 패키지를 이 쪽에 더합니다.

설치하기

  1. Python 3.12 이상이 설치되어 있는지 확인합니다. 교안은 Python 3.14.6 으로 실행했습니다.
  2. VS Code 를 설치하고, 확장 프로그램에서 "Python"(Microsoft)을 설치합니다.
  3. 아래 "작업 폴더 정하기"처럼 작업 폴더 C:\chatbot-course 를 만들고, 교안과 함께 받은 실습 파일을 넣은 뒤 VS Code 로 엽니다.
  4. VS Code 의 터미널(보기 → 터미널)을 엽니다. 아래 명령은 모두 이 터미널(PowerShell)에서 실행합니다.
PowerShell
# 파이썬 버전을 확인한다. --version = 판(버전) 보기
python --version
출력
Python 3.14.6

작업 폴더 정하기

실습을 시작하기 전에 이 과정에서 쓸 폴더 하나를 정합니다. 요리를 시작하기 전에 조리대 하나를 비워 두고 재료와 도구를 그 위에 모아 두는 것과 같습니다. 여기서 조리대가 작업 폴더이고, 재료가 실습 데이터(data), 도구가 가상환경(.venv)과 패키지 목록(requirements.txt)입니다. 이 교안은 작업 폴더를 C:\chatbot-course 로 정했다고 보고 경로 예시를 적습니다. 이 쪽과 각 장에서 말하는 "과목 폴더"가 이 폴더입니다.

이 경로를 예시로 쓰는 까닭

고른 것까닭
C 드라이브 바로 아래경로가 짧아 터미널에서 치기 쉽고, 오류 글에 나온 경로도 읽기 쉽습니다
영어 소문자와 - 만 쓴 이름폴더 이름에 한글이나 빈칸이 있으면 일부 도구가 이름을 받지 못합니다. 예를 들어 uv 의 uv init 은 한글 폴더 이름을 프로젝트 이름으로 쓰지 못해 오류를 냅니다(이 쪽 "부록 2" 참고)
바탕화면·OneDrive 폴더가 아닌 곳클라우드 동기화 폴더에서는 동기화하는 동안 파일이 잠기거나, 가상환경의 많은 파일을 함께 올리려 할 수 있습니다

다른 경로를 써도 실습에는 지장이 없습니다. 그때는 이 교안의 C:\chatbot-course 를 내 폴더의 경로로 바꿔 읽습니다.

폴더 만들고 열기

PowerShell(Windows 의 명령 창)을 열고 아래를 실행합니다.

PowerShell
# 작업 폴더를 만든다. New-Item = 새 항목 만들기, -ItemType Directory = 폴더로, -Force = 이미 있어도 오류 없이 넘어간다
New-Item -ItemType Directory -Force C:\chatbot-course
# 그 폴더로 옮긴다. cd = change directory(폴더 옮기기)
cd C:\chatbot-course
# 지금 폴더를 VS Code 로 연다. code = VS Code 를 여는 명령, . = 지금 폴더
code .
명령과 옵션원래 말뜻
New-Item -ItemType Directorynew item, item type새 폴더를 만든다
-Forceforce(밀어붙이다)같은 이름의 폴더가 이미 있어도 멈추지 않는다
cdchange directory명령을 실행할 폴더를 옮긴다
code .VS Code, 지금 폴더지금 폴더를 VS Code 의 작업 폴더로 연다

교안을 만든 PC 에서는 C 드라이브 바로 아래에 폴더를 만들지 않았습니다. 같은 이름의 폴더(chatbot-course)를 임시 폴더 안에 만들어 New-Item -Force 가 두 번 실행해도 오류 없이 넘어가는 것만 확인했습니다. code . 는 VS Code 를 설치할 때 "PATH 에 추가" 항목이 켜져 있어야 동작합니다. 동작하지 않으면 VS Code 에서 파일 → 폴더 열기로 C:\chatbot-course 를 엽니다.

받은 파일 넣기

교안과 함께 받은 실습 파일을 이 폴더에 풀어 넣습니다. 받는 파일은 requirements.txt(패키지 목록), .env.example(API 키 파일의 견본), .gitignore(git 이 올리지 않을 파일 목록), data 폴더(실습 데이터), code 폴더(장마다의 실습 코드)입니다. .env.example 과 .gitignore 는 이름이 점으로 시작해서 파일 탐색기에서 숨겨져 보일 수 있습니다.

이 쪽의 순서를 다 마치면 작업 폴더는 아래 모양이 됩니다. .venv 는 "가상환경 만들기"에서, .env 는 "API 키 넣기"에서 생깁니다.

출력
C:\chatbot-course
├─ .venv\              가상환경(설치한 패키지가 들어가는 곳)
├─ .env                API 키 파일(남에게 보내지 않는다)
├─ .env.example        .env 의 견본
├─ .gitignore          git 이 올리지 않을 파일 목록
├─ requirements.txt    패키지 목록
├─ data\               실습 데이터. 실습 코드는 여기서 실행한다
└─ code\               장마다의 실습 코드(ch01, ch02, …)

가상환경 만들기

가상환경(virtual environment)은 과목마다 따로 쓰는 패키지 상자입니다. 다른 과목의 패키지와 판이 섞이지 않습니다. 가상환경과 설치를 더 빠른 도구 uv 로 하고 싶으면 이 쪽 끝의 "부록 1. uv 소개"와 "부록 2. uv 로 환경설정하기"를 봅니다.

PowerShell
# venv(virtual environment) 모듈로 .venv 라는 이름의 가상환경을 만든다. -m = module(모듈로 실행)
python -m venv .venv
# 가상환경을 켠다. 켜지면 줄 앞에 (.venv) 가 붙는다
.\.venv\Scripts\Activate.ps1
명령과 옵션원래 말뜻
python -m venv .venvmodule, virtual environmentvenv 모듈을 실행해 .venv 폴더에 가상환경을 만든다
Activate.ps1activate(켜다), PowerShell 스크립트이 터미널에서 가상환경의 파이썬과 pip 를 쓰게 한다
deactivatedeactivate(끄다)가상환경을 끈다

패키지 설치하기

과목 폴더에 있는 requirements.txt 로 과정 내내 쓰는 패키지를 한 번에 설치합니다. 이 파일에는 설치할 패키지와 판(version)이 한 줄에 하나씩 이름==판 꼴로 적혀 있습니다. 장보기 목록을 들고 가면 하나하나 떠올리지 않아도 같은 물건을 사 오는 것처럼, 누가 설치해도 교안을 만든 PC 와 같은 판이 들어옵니다. 판까지 맞춰 두어야 실습 출력이 원고와 같게 나옵니다.

가상환경을 켠 채로, 과목 폴더(requirements.txt 가 있는 곳, 예: C:\chatbot-course)에서 실행합니다.

PowerShell
# pip 를 먼저 새 판으로 올린다. -m = module(모듈로 실행), -U = upgrade(올리기)
python -m pip install -U pip
# requirements.txt 에 적힌 패키지를 적힌 판 그대로 설치한다. -r = requirement file(목록 파일)
pip install -r requirements.txt
# 설치된 패키지끼리 판이 서로 맞는지 점검한다
pip check

교안을 만든 PC 에서 새 가상환경을 만들어 실행했을 때 마지막 pip check 가 찍은 줄입니다. 이 줄이 나오면 설치가 끝난 것입니다.

출력
No broken requirements found.
명령과 옵션원래 말뜻
pipPackage Installer for PythonPyPI(Python Package Index)에서 패키지를 받아 설치한다
-mmodule지금 켠 가상환경의 파이썬으로 pip 모듈을 실행한다
-Uupgrade이미 있는 패키지를 새 판으로 올린다
-r requirements.txtrequirement file파일에 적힌 목록을 읽어 한꺼번에 설치한다
pip checkcheck(점검하다)패키지끼리 필요한 판이 어긋난 곳이 없는지 본다

requirements.txt 는 아래처럼 장별로 묶여 있습니다. # 로 시작하는 줄은 설명이라 pip 가 읽지 않습니다.

출력
# 1~4차시: LangChain, OpenAI 연결, 키 읽기, 토큰 세기, 표와 그래프
langchain==1.4.7
langchain-core==1.7.3
langchain-openai==1.7.3
openai==3.42.1
pydantic==2.14.2
python-dotenv==1.2.4
tiktoken==0.14.0
numpy==2.5.4
pandas==3.1.0
matplotlib==3.11.2

# 5차시: 도구 연동과 MCP 서버
mcp==1.30.0
langchain-mcp-adapters==0.3.2

# 6차시: PDF 읽기, 텍스트 나누기, FAISS 벡터DB, RetrievalQA
langchain-community==0.4.2
langchain-text-splitters==1.1.3
langchain-classic==1.0.8
pypdf==6.21.4
faiss-cpu==1.15.1

# 7차시: 웹 화면
streamlit==1.66.1
  • 판을 고정했기 때문에 Python 판이 너무 새것이거나 오래되면 맞는 설치 파일이 없다는 오류가 날 수 있습니다. 교안은 Python 3.14.6 에서 위 목록이 오류 없이 설치되는 것을 확인했습니다. 다른 Python 판에서 설치가 막히면 아래 "자주 나는 오류"를 봅니다.
  • 이 목록에는 직접 쓰는 패키지만 적었습니다. 그 패키지가 필요로 하는 다른 패키지(의존성)는 pip 가 알아서 함께 설치합니다.
  • 내 PC 에 설치된 것을 목록으로 남기는 법(pip freeze)과 목록 파일의 꼴은 2장 "pip 와 패키지" 절에서 자세히 봅니다.

목록의 패키지가 쓰이는 곳은 아래와 같습니다.

패키지쓰는 곳
langchain, langchain-core메시지, 프롬프트, 가짜 모델(1장 실습 5)과 체인(3장부터)
openai, pydanticOpenAI 공식 라이브러리(2장), 칸과 조건을 정하는 틀(4장)
langchain-openaiOpenAI 모델을 LangChain 에 꽂아 쓰기(2장부터)
python-dotenv.env 파일에서 API 키 읽기(2장부터)
tiktoken토큰 세기(1장 실습 3, 실습 5, 프로젝트)
numpy, pandas, matplotlib표 다루기와 그래프(1장 실습 전체)
mcp, langchain-mcp-adaptersMCP(Model Context Protocol) 서버 만들기와, 그 도구를 LangChain 에 붙이기(5장)
langchain-community, pypdfPDF 읽기(PyPDFLoader)와 FAISS 벡터 저장소 연결(6장, 7장)
langchain-text-splitters긴 글을 조각으로 나누기(6장)
faiss-cpu벡터DB FAISS(Facebook AI Similarity Search). CPU 로 도는 판(6장, 7장)
langchain-classic옛 방식의 체인 RetrievalQA(6장)
streamlit파이썬으로 만드는 웹 화면(7장)

API 키 넣기

2장부터는 교수자가 나눠 준 OpenAI API 키로 진짜 모델을 부릅니다. 키는 코드에 적지 않고 과목 폴더의 .env 파일(예: C:\chatbot-course\.env)에 넣습니다. 과목 폴더에 견본 .env.example 이 있습니다. 아래 명령은 과목 폴더에서 실행합니다.

PowerShell
# 견본을 복사해 .env 를 만든다. Copy-Item = 파일 복사
Copy-Item .env.example .env
# 메모장으로 열어 "발급받은_인증키" 자리에 키를 붙여 넣고 저장한다
notepad .env
출력
OPENAI_API_KEY=발급받은_인증키
OPENAI_MODEL=gpt-4.1-mini
  • OPENAI_MODEL 줄은 없어도 됩니다. 없으면 실습 코드가 gpt-4.1-mini 를 씁니다. 교수자가 다른 모델을 정했으면 그 이름을 적습니다.
  • .env 는 남에게 보내거나 깃허브에 올리지 않습니다. 과목 폴더의 .gitignore 에 .env 가 들어 있어 git 이 올리지 않습니다.
  • 키를 읽는 방법과 까닭은 2장 "환경 변수와 .env" 절에서 자세히 봅니다.

VS Code 에서 가상환경 고르기

VS Code 가 .venv 의 파이썬을 쓰게 합니다. Ctrl+Shift+P 로 명령 창을 열고 Python: Select Interpreter 를 고른 뒤 .venv 가 들어간 항목을 고릅니다. 메뉴 이름은 VS Code 판에 따라 조금 다를 수 있습니다.

실행 확인하기

아래 코드를 check_env.py 로 저장하고 python check_env.py 로 실행합니다. 패키지의 판을 찍고, tiktoken 과 LangChain 의 가짜 모델이 돌아가는지 봅니다. tiktoken 은 처음 실행할 때 토큰 사전을 인터넷에서 받아 오므로 인터넷이 연결되어 있어야 합니다.

Python
import sys
from importlib.metadata import version

print("Python", sys.version.split()[0])
for name in ["langchain", "langchain-core", "langchain-openai", "openai", "python-dotenv", "tiktoken", "numpy", "pandas", "matplotlib",
             "mcp", "langchain-mcp-adapters", "langchain-community", "langchain-text-splitters", "langchain-classic",
             "pypdf", "faiss-cpu", "streamlit"]:
    print(f"{name:25} {version(name)}")

import tiktoken
from langchain_core.language_models.fake_chat_models import FakeListChatModel

enc = tiktoken.get_encoding("o200k_base")
print("토큰 수:", len(enc.encode("안녕하세요")))
print("가짜 모델:", FakeListChatModel(responses=["준비 완료"]).invoke("안녕").content)

교안을 만든 PC 에서 실행한 결과입니다. 판 숫자는 설치한 때에 따라 달라도 괜찮습니다.

출력
Python 3.14.6
langchain                 1.4.7
langchain-core            1.7.3
langchain-openai          1.7.3
openai                    3.42.1
python-dotenv             1.2.4
tiktoken                  0.14.0
numpy                     2.5.4
pandas                    3.1.0
matplotlib                3.11.2
mcp                       1.30.0
langchain-mcp-adapters    0.3.2
langchain-community       0.4.2
langchain-text-splitters  1.1.3
langchain-classic         1.0.8
pypdf                     6.21.4
faiss-cpu                 1.15.1
streamlit                 1.66.1
토큰 수: 2
가짜 모델: 준비 완료

실습 코드를 실행하는 곳

실습 코드는 과목 폴더의 data 폴더(예: C:\chatbot-course\data)에서 실행한다고 보고 썼습니다. 파일 이름만 적어 읽기 때문입니다. 터미널에서 cd data 로 들어간 뒤 실행하거나, code/ch01/ 의 실습 파일을 data 폴더에서 실행합니다.

PowerShell
# cd = change directory(폴더 옮기기). 과목 폴더에 있다면 cd data 만 쳐도 된다
cd C:\chatbot-course\data
# 1장 실습 1의 코드를 실행한다
python ..\code\ch01\lab1.py

자주 나는 오류

오류 글까닭해결
Activate.ps1 cannot be loaded because running scripts is disabledPowerShell 이 스크립트 실행을 막아 두었다Set-ExecutionPolicy -Scope CurrentUser RemoteSigned 를 한 번 실행한 뒤 다시 켠다. 회사 PC 라면 관리자에게 먼저 묻는다
code : 'code' 용어가 … 인식되지 않습니다VS Code 를 설치할 때 "PATH 에 추가"를 켜지 않았다VS Code 에서 파일 → 폴더 열기로 C:\chatbot-course 를 연다
ERROR: Could not open requirements file과목 폴더가 아닌 곳(예: data)에서 실행했다cd .. 로 requirements.txt 가 있는 과목 폴더로 가서 다시 실행한다
ERROR: No matching distribution found for …지금 Python 판에 맞는 그 패키지 판의 설치 파일이 없다python --version 을 보고 Python 3.12 이상인지 확인한다. 그래도 막히면 그 줄의 ==판 을 지워 맞는 판을 받게 한다. 이때는 출력이 원고와 조금 다를 수 있다
ModuleNotFoundError: No module named 'langchain_core'가상환경을 켜지 않고 실행했거나, 다른 파이썬으로 실행했다줄 앞에 (.venv) 가 있는지 보고, 없으면 가상환경을 켠 뒤 다시 실행한다. VS Code 오른쪽 아래에서 인터프리터를 .venv 로 고른다
FileNotFoundError: ... 'faq.csv'data 폴더가 아닌 곳에서 실행했다cd data 로 들어가서 실행한다
FileNotFoundError: ... 'out_next_word.json'앞 실습이 만드는 파일이 아직 없다1장 실습 2를 먼저 실행한다
tiktoken 에서 연결 오류(ConnectionError 등)토큰 사전을 처음 받을 때 인터넷이 끊겨 있었다인터넷을 연결하고 다시 실행한다. 한 번 받으면 다음부터는 PC 에 저장된 것을 쓴다
ImportError: cannot import name 'ChatOpenAI' from 'langchain.chat_models'옛 판의 예제 코드를 따라 했다지금 판에서는 from langchain_openai import ChatOpenAI 로 부른다
OpenAIError: ... Missing credentials 또는 api_key client option must be set키를 읽지 못했다과목 폴더에 .env 가 있는지, 줄이 OPENAI_API_KEY= 로 시작하는지, 코드가 load_dotenv(find_dotenv(usecwd=True)) 를 먼저 부르는지 본다
AuthenticationError(401)키가 틀렸거나 지워졌다키를 다시 붙여 넣는다. 앞뒤 빈칸과 따옴표가 섞이지 않았는지 본다
RateLimitError(429)너무 자주 부르거나 사용 한도를 넘었다잠시 쉬고 다시 부른다. 계속되면 교수자에게 알린다
NotFoundError(404)모델 이름이 틀렸거나 그 계정에서 쓸 수 없는 모델이다.env 의 OPENAI_MODEL 철자를 보거나 줄을 지운다

부록 1. uv 소개

지금까지는 파이썬에 들어 있는 venv 로 가상환경을 만들고 pip 로 패키지를 설치했습니다. 같은 일을 더 빠르게, 한 도구로 해 주는 것이 uv 입니다. 이 부록은 골라 쓰는 길입니다. 앞의 방법으로 이미 환경을 갖췄다면 건너뛰어도 실습에는 지장이 없습니다.

장보기에 빗대 보겠습니다. 앞에서 한 방법은 장바구니(venv)를 따로 챙기고, 장보기 목록(requirements.txt)을 들고 가게(PyPI)를 돌며 물건을 하나씩 담는(pip) 일입니다. uv 는 목록만 건네면 장바구니를 챙기는 일부터 물건을 담는 일까지 한꺼번에 해 주는 장보기 대행입니다. 한 번 산 물건은 집 창고(캐시, cache)에 쌓아 두었다가, 다음에 같은 물건이 필요하면 가게에 가지 않고 창고에서 꺼내 씁니다. 여기서 장바구니가 가상환경, 목록이 requirements.txt, 대행이 uv, 집 창고가 uv 의 내려받기 캐시입니다. 비유와 다른 점은, uv 는 물건을 사 오기 전에 목록의 물건끼리 서로 맞는지(판이 어긋나지 않는지)를 먼저 따져 본다는 것입니다.

pip 와 venv, uv pip, uv 프로젝트의 세 가지 설치 방법을 나란히 놓은 비교 그림

왼쪽 파랑 상자가 앞에서 한 방법, 가운데 보라 상자가 명령 앞에 uv 만 붙이는 방법, 오른쪽 하늘 상자가 uv 의 프로젝트 기능으로 관리하는 방법입니다. 세 방법 모두 과목 폴더의 같은 requirements.txt 를 읽으므로 설치되는 패키지와 판은 같습니다.

uv 는 무엇인가

항목내용
만든 곳Astral. 파이썬 코드 검사 도구 Ruff 를 만든 회사입니다
만든 언어러스트(Rust). 파이썬으로 짠 pip 와 달리, 컴퓨터가 바로 실행하는 프로그램으로 만들어졌습니다
하는 일공식 문서의 소개는 "파이썬 패키지와 프로젝트를 관리하는 아주 빠른 도구"입니다. 가상환경 만들기, 패키지 설치, 파이썬 판 설치, 프로젝트 관리를 한 도구로 합니다
대신하는 도구공식 문서는 pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv 등을 대신한다고 적습니다
빠르기공식 문서는 "pip 보다 10~100배 빠르다"고 적습니다. 만든 곳이 잰 값이고, 패키지와 캐시 상태, 인터넷 속도에 따라 달라집니다. 이 교안은 따로 견주어 재지 않았습니다
이름이름 "uv" 의 뜻이나 유래는 공식 문서에 밝혀져 있지 않습니다

pip 와 uv 견주기

하는 일파이썬 기본 도구uv
가상환경 만들기python -m venv .venvuv venv
목록으로 설치하기pip install -r requirements.txtuv pip install -r requirements.txt
판이 맞는지 점검하기pip checkuv pip check
설치된 목록 보기pip listuv pip list
가상환경의 파이썬으로 실행하기가상환경을 켠 뒤 python 파일.pyuv run python 파일.py(켜지 않아도 된다)
파이썬 자체 설치python.org 에서 받아 설치uv python install 3.14

uv 를 쓰는 두 가지 방식

  • uv pip 방식: 지금까지의 명령 앞에 uv 만 붙입니다. requirements.txt 를 그대로 쓰고 새로 익힐 것이 거의 없습니다. 이 과정에는 이 방식을 권합니다.
  • uv 프로젝트 방식: uv init 으로 프로젝트 설명서 pyproject.toml 을 만들고, uv add 로 패키지를 더합니다. uv 는 설치한 모든 패키지의 정확한 판을 잠금 파일(lock file, 판을 잠가 두는 파일) uv.lock 에 적어 두고, 다른 PC 에서는 uv sync 한 번으로 똑같은 환경을 다시 만듭니다. 내 챗봇을 따로 저장소로 꾸려 배포할 때 알맞습니다.

주의할 점

  • uv 가 만든 가상환경에는 pip 가 들어 있지 않습니다. 이 가상환경에서는 pip install 대신 uv pip install 을 씁니다. 교안을 만든 PC 에서 uv venv 로 만든 .venv\Scripts 를 보니 pip 파일이 하나도 없었습니다.
  • 한 가상환경에 pip 와 uv 를 섞어 쓰지 않는 편이 안전합니다. 한 가지 방법을 정해 끝까지 씁니다.
  • uv 는 파이썬과 따로 설치하는 프로그램입니다. 교실 PC 에 프로그램 설치가 막혀 있으면 앞의 venv 와 pip 방법을 씁니다.

부록 2. uv 로 환경설정하기

uv 를 설치하고, 과목 폴더의 requirements.txt 로 가상환경을 갖추는 순서입니다. 아래 출력은 교안을 만든 PC(Windows 11, uv 0.12.23, Python 3.14.6)에서 과목 폴더를 본뜬 빈 폴더에 실제로 실행해 얻은 것입니다. 걸린 시간은 이미 받아 둔 캐시가 있는 상태에서 잰 것이라, 처음 설치하는 PC 에서는 더 걸립니다.

uv 설치하기

아래 셋 가운데 하나로 설치합니다. 명령은 uv 공식 문서(docs.astral.sh/uv)의 설치 쪽에 적힌 것입니다. 교안을 만든 PC 에는 uv 가 이미 설치되어 있어서, 이 블록은 실행하지 않았습니다.

PowerShell
# 방법 1. 공식 설치 스크립트. irm = Invoke-RestMethod(주소의 내용을 받아 오기), iex = Invoke-Expression(받은 글을 명령으로 실행)
# -ExecutionPolicy ByPass = 이 한 번만 스크립트 실행 제한을 건너뛴다
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# 방법 2. Windows 의 패키지 관리자 winget 으로 설치. --id = 설치할 프로그램의 이름표, -e = exact(이름이 정확히 같은 것만)
winget install --id=astral-sh.uv -e
# 방법 3. 이미 있는 파이썬의 pip 로 설치
pip install uv

설치한 뒤에는 터미널을 새로 열고 판을 확인합니다. 설치 스크립트는 uv 를 사용자 폴더의 .local\bin 에 넣는데, 이미 열려 있던 터미널은 그 위치를 모를 수 있기 때문입니다.

PowerShell
# uv 의 판을 확인한다
uv --version
출력
uv 0.12.23 (46b84fd0b 2026-10-03 x86_64-pc-windows-msvc)

방법 1. requirements.txt 로 설치하기 (uv pip)

과목 폴더에서 실행합니다. 가상환경을 켜지 않아도 uv 가 지금 폴더의 .venv 를 찾아 씁니다.

PowerShell
# 과목 폴더에 .venv 가상환경을 만든다. --python 3.14 = 이 판의 파이썬으로 만든다(없으면 uv 가 받아 온다)
uv venv --python 3.14
출력
Using CPython 3.14.6 interpreter at: C:\Users\사용자\AppData\Local\Programs\Python\Python314\python.exe
Creating virtual environment at: .venv
Activate with: .venv\Scripts\activate

첫 줄의 경로는 PC 마다 다릅니다. 위 출력에서는 사용자 이름을 사용자 로 바꿔 적었습니다.

PowerShell
# requirements.txt 에 적힌 패키지를 적힌 판 그대로 .venv 에 설치한다. -r = requirement file
uv pip install -r requirements.txt
출력
Resolved 98 packages in 213ms
Installed 98 packages in 18.73s
 + aiohappyeyeballs==2.7.1
 ...

Resolved 는 목록의 패키지 18개와, 그 패키지들이 필요로 하는 의존성까지 모두 98개의 판을 맞춰 정했다는 뜻입니다. Installed 는 실제로 설치했다는 뜻입니다. 그 아래로 설치한 패키지가 + 이름==판 꼴로 98줄 이어지는데, 여기서는 첫 줄만 남기고 줄였습니다.

PowerShell
# 설치된 패키지끼리 판이 서로 맞는지 점검한다
uv pip check
# 실행 확인 코드(위 "실행 확인하기"의 check_env.py)를 .venv 의 파이썬으로 돌린다. 가상환경을 켜지 않아도 된다
uv run python check_env.py
출력
Checked 98 packages in 19ms
All installed packages are compatible
Python 3.14.6
langchain                 1.4.7
langchain-core            1.7.3
...
토큰 수: 2
가짜 모델: 준비 완료

All installed packages are compatible 는 pip 의 No broken requirements found. 와 같은 뜻입니다. 실행 확인 코드의 출력은 위 "실행 확인하기"와 같아서 중간을 줄였습니다. 실습 코드도 cd data 로 들어간 뒤 uv run python ..\code\ch01\lab1.py 처럼 실행합니다. 가상환경을 켜고(.\.venv\Scripts\Activate.ps1) 평소처럼 python 으로 실행해도 됩니다.

방법 2. 프로젝트로 관리하기 (uv init, uv add)

requirements.txt 의 목록을 uv 프로젝트로 옮깁니다. 과목 폴더(C:\chatbot-course)에서 실행합니다. uv init 은 폴더 이름을 프로젝트 이름으로 씁니다. 교안을 만든 PC 에서 chatbot-course 라는 이름의 폴더에 실행했더니 프로젝트 이름이 chatbot-course 가 됐습니다.

PowerShell
# 프로젝트 설명서 pyproject.toml 만 만든다. --bare = 예제 파일 없이 설명서만, --python 3.14 = 이 판의 파이썬을 쓴다
uv init --bare --python 3.14
# requirements.txt 의 패키지를 프로젝트에 더한다. -r = requirement file. .venv 와 uv.lock 이 함께 생긴다
uv add -r requirements.txt
출력
Initialized project `chatbot-course`
Using CPython 3.14.6 interpreter at: C:\Users\사용자\AppData\Local\Programs\Python\Python314\python.exe
Creating virtual environment at: .venv
Resolved 100 packages in 430ms
Installed 98 packages in 15.05s

위 출력은 두 번의 시험을 이어 붙인 것입니다. 첫 줄은 chatbot-course 폴더에서, 나머지는 같은 requirements.txt 로 다른 빈 폴더에서 실행한 결과입니다. 작업 폴더를 한글 이름으로 정했다면 uv init 이 폴더 이름을 프로젝트 이름으로 쓰지 못해 아래 오류가 납니다. 그때는 uv init --bare --python 3.14 --name chatbot-course 처럼 --name 으로 영어 이름을 따로 줍니다.

출력
error: The current directory (`챗봇_AI교안`) is not a valid package name. Please provide a package name with `--name`.

uv add 가 끝나면 pyproject.toml 의 dependencies 에 목록의 패키지 18개가 판까지 적힙니다. 앞부분은 이렇습니다.

출력
[project]
name = "chatbot-course"
version = "0.1.0"
requires-python = ">=3.14"
dependencies = [
    "faiss-cpu==1.15.1",
    "langchain==1.4.7",
    ...
]
PowerShell
# 프로젝트 환경이 pyproject.toml·uv.lock 과 맞는지 보고, 다르면 맞춘다
uv sync
# 프로젝트 환경의 파이썬으로 실행한다
uv run python check_env.py
출력
Resolved 100 packages in 2ms
Checked 98 packages in 19ms
...
토큰 수: 2
가짜 모델: 준비 완료

다른 PC 에서는 pyproject.toml 과 uv.lock 이 든 폴더에서 uv sync 한 번이면 같은 판의 환경이 만들어집니다. uv.lock 은 uv 가 쓰는 파일이므로 손으로 고치지 않습니다. 이후 패키지를 더할 때는 uv add 이름 을 쓰면 pyproject.toml 과 uv.lock 이 함께 고쳐집니다.

명령과 옵션

명령과 옵션원래 말뜻
uv venvvirtual environment지금 폴더에 .venv 가상환경을 만든다
--python 3.14python version이 판의 파이썬으로 만든다. PC 에 없으면 uv 가 받아 온다
--clearclear(비우다)이미 있는 .venv 를 지우고 새로 만든다
uv pip install -rrequirement file목록 파일대로 설치한다. pip 와 쓰는 법이 같다
uv pip checkcheck(점검하다)패키지끼리 판이 맞는지 본다
uv runrun(실행하다)가상환경을 켜지 않고 그 환경의 파이썬으로 명령을 실행한다
uv init --bareinitialize(처음 차리다)예제 파일 없이 pyproject.toml 만 만든다. 프로젝트 이름은 폴더 이름을 쓰고, --name 으로 따로 줄 수 있다
uv addadd(더하다)패키지를 프로젝트에 더하고 uv.lock 과 환경을 고친다
uv syncsynchronize(맞추다)환경을 uv.lock 과 똑같이 맞춘다
uv python installinstall(설치하다)파이썬 자체를 판을 골라 설치한다. 이 교안에서는 실행하지 않았다

uv 를 쓸 때 자주 나는 오류

오류 글까닭해결
'uv' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다설치 전에 열어 둔 터미널이 uv 의 위치를 모른다터미널(VS Code 라면 VS Code 전체)을 닫았다가 다시 연다
Failed to create virtual environment 와 A virtual environment already exists at: .venv앞에서 만든 .venv 가 이미 있다그 가상환경을 그대로 쓰거나, uv venv --clear --python 3.14 로 새로 만든다
No module named pipuv 가 만든 가상환경에서 python -m pip 를 썼다uv pip install … 로 설치한다
is not a valid package name폴더 이름이 한글이라 프로젝트 이름으로 쓸 수 없다uv init --bare --python 3.14 --name chatbot-course 처럼 이름을 따로 주거나, 작업 폴더를 C:\chatbot-course 처럼 영어 이름으로 만든다
VS Code 가 패키지를 못 찾는다(ModuleNotFoundError)VS Code 가 다른 파이썬을 쓰고 있다앞의 "VS Code 에서 가상환경 고르기"처럼 .venv 의 파이썬을 고른다. uv 가 만든 .venv 도 같은 자리에 있다
← 이전LangChain 으로 만드는 웹 기반 챗봇다음 →과정 로드맵과 STEP 요약