단계 목차 보기
시작 전에 준비할 것
설치 도중에 막히는 대부분의 이유는 준비가 안 된 상태로 시작해서입니다. 세 가지만 먼저 확인하세요.
내 컴퓨터에 프로그램을 설치할 수 있나요?
학교 실습실 PC는 설치가 제한된 경우가 있습니다. 설치 창에서 "관리자 권한이 필요합니다"가 뜨면 선생님께 말씀드리세요. 개인 노트북이라면 대부분 문제없습니다.
내 계정 이름에 한글이 들어 있나요?
Windows 계정 이름이 한글이면 홈 디렉터리 경로에 한글이 섞입니다(C:\Users\홍길동). 대부분은 문제없지만 일부 라이브러리에서 오류가 납니다. 아래 명령으로 미리 확인해 두세요.
echo %USERPROFILE%
한글이 나온다면 지금 당장 바꿀 필요는 없습니다. 나중에 이상한 오류가 나면 이 점을 선생님께 말씀드리세요. 실습 폴더는 08단계에서 함께 만듭니다.
GitHub 계정에 쓸 이메일을 정하세요
- 학교 이메일이 있다면 그것으로 가입하세요. 학생 인증이 훨씬 빨리 끝납니다.
- 학교 이메일이 없으면 개인 이메일로 가입한 뒤, 학생증 사진으로 인증합니다.
- 학교에서 관리하는 조직(Organization) 계정이 아니라 개인 계정으로 가입해야 합니다.
확인
GitHub 계정 만들고 학생 인증받기
학생 인증(Student Developer Pack)을 받으면 Copilot을 비롯한 여러 유료 도구를 무료로 씁니다. 심사에 하루에서 며칠이 걸리므로 가장 먼저 신청해 두고 나머지 설치를 진행하세요.
1. 계정 만들기
- github.com/signup에서 가입합니다.
- 사용자 이름은 앞으로 계속 쓰게 됩니다. 포트폴리오에 그대로 노출되니 진지하게 정하세요. (예:
gildong-kim) - 가입 후 메일함에서 인증 링크를 눌러 이메일 확인을 마칩니다.
- 2단계 인증(2FA)을 켜라고 나오면 켜 두세요. 나중에 필수가 됩니다.
2. 학생 인증 신청하기
- education.github.com/pack에 접속해 신청을 시작합니다.
- 역할은 Student를 선택합니다.
- 학교 이름은 Mirim Meister High School처럼 영문으로 입력합니다. 목록에 없으면 직접 입력하세요.
- 학교 이메일이 없다면 학생증 사진을 올립니다. 이름, 학교명, 현재 연도가 또렷하게 보여야 합니다.
- "어떻게 GitHub를 사용할 계획인가요?"에는 영어로 두세 문장 적으면 충분합니다.
I am a student at Mirim Meister High School, majoring in
intelligent software. I use GitHub to store my Python class
projects, practice version control, and share small tools
I build with my classmates.
거절되는 흔한 이유
- 학생증 사진이 흐리거나 잘려서 이름·학교명이 안 보임
- 발급 연도나 유효 기간이 없어서 재학 중인지 확인 불가
- 사진 속 이름과 GitHub 프로필 이름이 다름
거절되면 사유가 메일로 오고, 사진을 다시 찍어 재신청할 수 있습니다. 여러 번 신청해도 불이익은 없습니다.
제대로 됐는지 확인
승인되면 GitHub 설정 → Billing 화면에 GitHub Pro 표시가 뜨고, 프로필에 학생 배지가 붙습니다. 승인 메일도 옵니다.
Copilot 무료 혜택은 시기에 따라 달라집니다
학생용 Copilot 정책은 2026년에도 여러 번 바뀌었습니다. 신청 시점에 어떤 등급이 열려 있는지는 Student Pack 페이지와 GitHub 계정의 Copilot 설정에서 직접 확인하세요. 승인만 되어 있으면 정책이 바뀔 때 자동으로 적용됩니다.
확인
Python 설치하기
VS Code는 편집기일 뿐, 코드를 실제로 실행하는 것은 파이썬입니다. 파이썬을 먼저 설치합니다.
Windows
- python.org/downloads에서 3.12 이상 버전을 내려받습니다.
- 설치 프로그램 첫 화면 맨 아래 Add python.exe to PATH에 반드시 체크합니다.
- Install Now를 누릅니다.
- 마지막 화면에 Disable path length limit 버튼이 보이면 눌러 줍니다.
PATH 체크를 놓쳤다면
설치 파일을 다시 실행 → Modify → 다음 → Add Python to environment variables에 체크하고 다시 설치하면 됩니다. 지우고 다시 깔 필요 없습니다.
macOS
python.org 설치 파일을 받아 그대로 설치하거나, Homebrew가 있다면 brew install python@3.12로 설치합니다. macOS에 원래 들어 있는 파이썬은 버전이 낮으니 새로 설치하세요.
제대로 됐는지 확인
Windows는 Win+R → cmd, macOS는 터미널을 열고 아래를 입력하세요. 버전 번호가 나오면 성공입니다.
python --version
pip --version
macOS에서 아무 반응이 없거나 버전이 2.x로 나오면 python3 --version으로 확인하세요.
"'python'은(는) 내부 또는 외부 명령이 아닙니다"
PATH 설정이 안 된 것입니다. 위의 Modify 방법으로 다시 설정한 뒤, 열려 있던 명령 프롬프트 창을 닫고 새로 여세요. 창을 새로 열지 않으면 변경이 반영되지 않습니다.
확인
VS Code 설치하기
Visual Studio Code는 무료 코드 편집기입니다. 이름이 비슷한 Visual Studio(뒤에 Code가 없는 것)와는 다른 프로그램이니 헷갈리지 마세요.
- code.visualstudio.com에서 내려받습니다. 화면이 알아서 내 운영체제에 맞는 버튼을 보여 줍니다.
- Windows 설치 중 추가 작업 선택 화면에서 아래 항목에 체크하세요.
- 파일 상황에 맞는 메뉴에 "Code(으)로 열기" 작업 추가
- 디렉터리 상황에 맞는 메뉴에 "Code(으)로 열기" 작업 추가
- PATH에 추가 (기본으로 체크되어 있습니다)
- macOS는 내려받은 앱을 응용 프로그램 폴더로 옮긴 뒤 실행합니다.
아직 폴더는 열지 마세요
VS Code는 파일 하나가 아니라 폴더를 여는 방식으로 씁니다. 어떤 폴더를 열지는 08단계에서 실습 폴더를 만든 다음에 정합니다. 지금은 설치만 하고 넘어가세요.
제대로 됐는지 확인
명령 프롬프트에서 code --version을 입력했을 때 버전이 나오면 PATH 등록까지 끝난 것입니다. 앞으로 어느 폴더에서든 code . 한 줄로 그 폴더를 열 수 있습니다.
확인
화면을 한국어로 바꾸기
메뉴가 영어라서 헤매는 시간을 줄입니다. 다만 오류 메시지 검색은 영어가 훨씬 잘 나오니, 익숙해지면 영어로 되돌리는 것도 방법입니다.
방법
- 왼쪽 세로 막대에서 네모 네 개 모양의 확장(Extensions) 아이콘을 누릅니다. 단축키는 Ctrl+Shift+X입니다.
- 검색창에
Korean Language Pack을 입력합니다. - Microsoft가 만든 Korean Language Pack for Visual Studio Code를 설치합니다.
- 설치가 끝나면 오른쪽 아래에 다시 시작하겠냐는 알림이 뜹니다. Restart를 누릅니다.
알림을 놓쳤을 때
Ctrl+Shift+P로 명령 팔레트를 열고 아래를 입력한 뒤 ko를 고릅니다.
Configure Display Language
명령 팔레트가 이 안내서의 핵심 도구입니다
VS Code의 거의 모든 기능은 Ctrl+Shift+P에서 이름을 검색해 실행할 수 있습니다. 메뉴 위치가 버전마다 달라져도 명령 이름은 잘 바뀌지 않으니, 앞으로 "어디에 있더라?" 싶을 때는 여기서 검색하세요.
제대로 됐는지 확인
다시 시작한 뒤 상단 메뉴가 파일 / 편집 / 선택 영역 / 보기로 보이면 성공입니다.
확인
확장 프로그램 설치하기
VS Code는 처음엔 텅 빈 편집기입니다. 확장을 깔아야 파이썬 문법 검사, 자동 완성, 디버깅이 동작합니다. 확장 화면(Ctrl+Shift+X)에서 아래 ID를 검색해 설치하세요.
반드시 설치
| 확장 이름 | 검색용 ID | 하는 일 |
|---|---|---|
| Python | ms-python.python | 파이썬 실행, 인터프리터 선택, 테스트. 설치하면 아래 두 개가 함께 깔립니다. |
| Pylance | ms-python.vscode-pylance | 자동 완성과 타입 검사. 오타를 미리 잡아 줍니다. |
| Python Debugger | ms-python.debugpy | 중단점을 걸고 한 줄씩 실행하는 디버깅 기능. |
| Korean Language Pack | MS-CEINTL.vscode-language-pack-ko | 05단계에서 이미 설치했습니다. |
있으면 편한 것
| 확장 이름 | 검색용 ID | 하는 일 |
|---|---|---|
| Error Lens | usernamehw.errorlens | 오류를 코드 줄 옆에 바로 띄워 줍니다. 초보자에게 특히 도움이 됩니다. |
| indent-rainbow | oderwat.indent-rainbow | 들여쓰기 단계를 색으로 구분합니다. 파이썬 들여쓰기 실수를 줄여 줍니다. |
| autoDocstring | njpwerner.autodocstring | 함수 위에서 """를 치면 설명 틀을 자동으로 만들어 줍니다. |
| Path Intellisense | christian-kohler.path-intellisense | 파일 경로를 자동 완성해 줍니다. |
Code Runner는 지금 설치하지 마세요
실행 버튼이 하나 더 생겨서 편해 보이지만, VS Code가 고른 인터프리터를 무시하고 다른 파이썬으로 실행하는 일이 잦습니다. "분명 설치했는데 모듈을 못 찾는다"는 문제의 단골 원인입니다. 수업에서는 기본 실행 버튼만 씁니다.
설치한 확장을 다른 PC로 옮기기
왼쪽 아래 계정 아이콘 → 설정 동기화 켜기에서 GitHub 계정으로 로그인하면, 집 컴퓨터와 실습실 PC의 확장·설정·단축키가 자동으로 같아집니다.
제대로 됐는지 확인
확장 화면 왼쪽 위 설치됨 목록에 Python, Pylance, Python Debugger가 모두 보이면 됩니다. 확장 이름 옆에 톱니바퀴가 아니라 경고 표시가 있다면 다시 로드가 필요한 상태이니 VS Code를 껐다 켜세요.
확인
Git 설치하고 최초 설정하기
Git은 코드의 변경 이력을 기록하는 프로그램이고, GitHub은 그 기록을 인터넷에 올려 두는 곳입니다. 둘은 다른 것입니다. Git을 설치하고, 내가 누구인지 알려 주는 최초 설정을 해야 첫 커밋을 만들 수 있습니다.
1. 이미 깔려 있는지 먼저 확인
터미널(Ctrl+`)이나 명령 프롬프트에서 확인합니다. 버전이 나오면 설치는 이미 끝난 것이니 2번은 건너뛰세요.
git --version
git version 2.47.1.windows.1
2. 설치하기
- Windows — git-scm.com/download/win에서 내려받아 설치합니다. 선택 항목이 아주 많이 나오는데 전부 기본값으로 두고 Next만 눌러도 됩니다.
- macOS — 터미널에
git --version을 치면 설치 안내 창이 뜹니다. 또는xcode-select --install을 실행하세요. Homebrew가 있다면brew install git도 됩니다.
설치 후에도 git을 못 찾는다면
열려 있던 터미널과 VS Code를 완전히 닫고 다시 열어야 새 PATH가 반영됩니다. 그래도 안 되면 재부팅하세요.
3. 지금 설정이 되어 있는지 확인
Git의 전역 설정은 .gitconfig라는 파일 하나에 저장됩니다. 아래 명령으로 그 내용을 확인합니다.
git config --list --global
이런 반응이면 아직 설정이 없는 것입니다
- 아무것도 출력되지 않고 그냥 다음 줄로 넘어감
fatal: unable to read config file '...': No such file or directoryuser.name과user.email두 줄이 목록에 없음
셋 중 하나라면 4번으로 진행하세요.
값 하나만 콕 집어 확인하려면 이렇게 씁니다. 설정이 없으면 아무것도 출력되지 않습니다.
git config --global user.name
git config --global user.email
4. 최초 설정하기
아래 두 줄이 반드시 필요한 설정입니다. 커밋 하나하나에 이 이름과 이메일이 기록으로 남습니다.
git config --global user.name "Gildong Hong"
git config --global user.email "gildong@e-mirim.hs.kr"
이메일은 GitHub 계정과 같은 것으로
다른 이메일로 커밋하면 GitHub에 올렸을 때 내 잔디밭에 기록이 남지 않습니다. 02단계에서 GitHub에 가입할 때 쓴 이메일을 그대로 넣으세요.
이메일을 공개하기 싫다면 GitHub이 주는 비공개 주소를 쓸 수 있습니다. github.com/settings/emails에서 Keep my email addresses private를 켜면 12345678+아이디@users.noreply.github.com 형태의 주소가 나옵니다. 그 주소를 user.email에 넣으세요.
다음 세 줄은 필수는 아니지만 넣어 두면 나중에 겪을 문제를 미리 막아 줍니다.
git config --global init.defaultBranch main
git config --global core.quotepath false
git config --global pull.rebase false
| 설정 | 하는 일 |
|---|---|
init.defaultBranch main | 새 저장소의 기본 브랜치 이름을 main으로 맞춥니다. GitHub 기본값과 같아져 헷갈리지 않습니다. |
core.quotepath false | 한글 파일 이름이 \355\225\234처럼 깨져 보이는 것을 막습니다. |
pull.rebase false | git pull을 할 때 어떻게 합칠지 물어보는 경고를 없앱니다. |
운영체제에 따라 줄바꿈 문자 처리도 맞춰 둡니다. 이걸 안 하면 팀 작업에서 "고친 게 없는데 파일 전체가 바뀐 것으로 보이는" 현상이 생깁니다.
git config --global core.autocrlf true
git config --global core.autocrlf input
5. .gitconfig 파일을 직접 열어 보기
설정은 결국 텍스트 파일 하나입니다. 아래 명령으로 VS Code에서 바로 열 수 있습니다.
git config --global --edit
| 운영체제 | 파일 위치 |
|---|---|
| Windows | C:\Users\사용자이름\.gitconfig |
| macOS · 리눅스 | ~/.gitconfig |
[user]
name = Gildong Hong
email = gildong@e-mirim.hs.kr
[init]
defaultBranch = main
[core]
quotepath = false
autocrlf = true
[pull]
rebase = false
파일을 직접 고쳐도 됩니다
명령어로 설정하든 이 파일을 편집기로 고치든 결과는 같습니다. 다만 대괄호 [user] 같은 묶음 이름과 들여쓰기를 지켜야 합니다. 헷갈리면 명령어 쪽을 쓰세요.
6. 잘못 넣었을 때 고치기
같은 명령을 다시 실행하면 덮어쓰기 됩니다. 지우려면 --unset을 씁니다.
git config --global user.name "새 이름" # 그냥 다시 실행하면 덮어씀
git config --global --unset user.email # 값을 지움
전역 설정과 저장소별 설정
--global을 붙이면 내 컴퓨터 전체에 적용되고, 특정 프로젝트 폴더 안에서 --global 없이 실행하면 그 프로젝트에만 적용됩니다. 실습실 공용 PC에서 여러 명이 번갈아 쓴다면, 각자 프로젝트 폴더에서 --global 없이 설정하는 편이 안전합니다.
제대로 됐는지 확인
git config --list --global을 실행했을 때 아래처럼 user.name과 user.email이 보이면 됩니다.
user.name=Gildong Hong
user.email=gildong@e-mirim.hs.kr
init.defaultbranch=main
core.quotepath=false
core.autocrlf=true
pull.rebase=false
확인
실습 폴더 만들기
앞으로 만들 파일이 수십 개가 됩니다. 처음에 자리를 정해 두지 않으면 나중에 "그 파일 어디 갔지"로 시간을 다 씁니다. 홈 디렉터리 아래에 aipyprojects 하나를 만들고, 그 안에 실습별로 폴더를 나눕니다.
1. 홈 디렉터리가 어디인지 알기
홈 디렉터리는 내 계정의 기본 폴더입니다. 터미널을 열면 보통 여기서 시작합니다.
| 운영체제 | 홈 디렉터리 위치 |
|---|---|
| Windows | C:\Users\사용자이름 |
| macOS | /Users/사용자이름 |
줄여서 ~(물결표)로 씁니다. 이 안내서에서 ~/aipyprojects라고 쓰면 Windows에서는 C:\Users\사용자이름\aipyprojects를 뜻합니다.
Windows (명령 프롬프트) echo %USERPROFILE%
Windows (PowerShell) echo $HOME
macOS · 리눅스 echo $HOME
2. 폴더 만들기
터미널에 아래를 그대로 붙여 넣고 실행하세요. 홈으로 이동한 뒤 aipyprojects와 첫 실습 폴더를 한 번에 만듭니다.
cd %USERPROFILE%
mkdir aipyprojects
cd aipyprojects
mkdir ch01-module
cd ch01-module
cd ~
mkdir -p aipyprojects/ch01-module
cd aipyprojects/ch01-module
탐색기나 Finder에서 마우스로 만들어도 똑같습니다. 다만 명령으로 만들면 오타가 나도 바로 알 수 있고, 앞으로 쓸 cd 명령에도 익숙해집니다.
3. 이렇게 나눠 씁니다
실습마다 폴더를 새로 만드세요. 1단원에서 배웠듯 파이썬은 현재 작업 디렉터리부터 모듈을 찾기 때문에, 관련 있는 파일끼리 한 폴더에 모여 있어야 임포트가 됩니다.
~/aipyprojects/
ch01-module/ 1단원 모듈과 패키지
greet.py
greetmain.py
nature/
__init__.py
animals/
__init__.py
bird.py
ch02-gui/ 2단원 GUI 프로그래밍
memo.py
gui_test.py
sandbox/ 그냥 이것저것 해 보는 곳
check_env.py
폴더 이름 정하는 규칙
- 영문 소문자, 숫자, 붙임표(
-)만 씁니다.ch02-gui처럼요. - 한글과 공백은 넣지 않습니다.
2단원 실습같은 이름은 일부 도구에서 오류가 납니다. - 번호를 앞에 붙이면 순서대로 정렬돼서 찾기 쉽습니다.
바탕화면이나 문서 폴더에 만들지 마세요
Windows에서 바탕화면·문서·사진 폴더는 OneDrive와 자동 동기화되는 경우가 많습니다. 파이썬이 파일을 쓰는 도중 OneDrive가 끼어들면 저장이 실패하거나 파일이 중복 생성됩니다. 홈 디렉터리 바로 아래에 만드는 이유가 이것입니다.
4. VS Code로 열기
VS Code는 파일 하나가 아니라 폴더를 여는 방식으로 씁니다. 지금 만든 실습 폴더 안에서 아래를 실행하세요. 마지막 점(.)은 "지금 이 폴더"라는 뜻입니다.
code .
메뉴로 열려면 파일 → 폴더 열기, 단축키는 Ctrl+K Ctrl+O입니다.
aipyprojects 전체를 열지 마세요
aipyprojects를 통째로 열면 파이썬의 작업 디렉터리가 그 상위 폴더가 되어, import greet이 ModuleNotFoundError로 실패합니다. 실습 폴더 하나만(예: ch01-module) 여는 것이 규칙입니다.
5. Git 저장소로 만들기 (선택)
07단계에서 Git 설정을 마쳤다면, 실습 폴더를 저장소로 만들어 변경 이력을 남길 수 있습니다.
git init
git add .
git commit -m "첫 실습 시작"
커밋하기 전에 올리지 않을 파일 목록을 만들어 두세요. 파이썬이 자동으로 만드는 캐시 폴더 같은 것들입니다.
__pycache__/
*.pyc
.venv/
.env
*.prof
.vscode/
Author identity unknown 오류가 난다면
커밋할 때 아래 메시지가 나오면 07단계의 user.name·user.email 설정이 빠진 것입니다. 되돌아가서 설정한 뒤 다시 커밋하세요.
Author identity unknown
*** Please tell me who you are.
제대로 됐는지 확인
- VS Code 왼쪽 위 탐색기에 CH01-MODULE처럼 실습 폴더 이름이 보인다
- 터미널(Ctrl+`)을 열면 프롬프트 경로가 그 폴더로 되어 있다
- 터미널에
cd(Windows) 또는pwd(macOS)를 치면...\aipyprojects\ch01-module이 나온다
확인
첫 실행하고 환경 점검하기
여기서 한 번에 성공하면 나머지는 쉽습니다. 인터프리터를 고르고, 점검 스크립트를 돌려 봅니다.
1. 인터프리터 고르기
컴퓨터에 파이썬이 여러 개 깔려 있을 수 있어서, VS Code에 "이 파이썬으로 실행해"라고 알려 줘야 합니다.
- Ctrl+Shift+P를 누릅니다.
Python: Select Interpreter를 입력하고 실행합니다.- 목록에서 3.12 이상 버전을 고릅니다.
제대로 됐는지 확인
VS Code 창 오른쪽 아래 상태 표시줄에 3.12.4 같은 버전이 표시됩니다. 이 안내서 맨 아래에 있는 파란 막대와 같은 위치입니다.
2. 점검 스크립트 만들기
08단계에서 만든 실습 폴더에 check_env.py라는 새 파일을 만들고 아래 코드를 붙여 넣으세요. 파일을 새로 만들 때는 탐색기 영역에서 새 파일 아이콘을 누르거나 Ctrl+N 후 저장하면 됩니다.
import sys
import os
import subprocess
print("[OK] 파이썬", sys.version.split()[0])
print("[OK] 실행 위치 ", os.getcwd())
try:
import tkinter
print("[OK] tkinter 사용 가능")
except ImportError:
print("[!!] tkinter 없음 - 2단원 GUI 실습이 안 됩니다")
try:
name = subprocess.run(["git", "config", "--global", "user.name"],
capture_output=True, text=True).stdout.strip()
if name:
print("[OK] Git 설정됨 -", name)
else:
print("[!!] Git 사용자 이름이 없습니다. 07단계를 다시 하세요.")
except FileNotFoundError:
print("[!!] Git이 설치되어 있지 않습니다. 07단계를 확인하세요.")
if sys.version_info < (3, 10):
print("[!!] 파이썬이 너무 낮습니다. 3.12 이상을 설치하세요.")
else:
print("[OK] 준비 완료. 교과서 실습을 시작하세요.")
3. 실행하기
편집기 오른쪽 위의 ▷ 삼각형 버튼을 누르거나, Ctrl+F5를 누릅니다. 아래쪽에 터미널이 열리며 결과가 나옵니다.
[OK] 파이썬 3.12.4
[OK] 실행 위치 C:\Users\mirim\aipyprojects\ch01-module
[OK] tkinter 사용 가능
[OK] Git 설정됨 - Gildong Hong
[OK] 준비 완료. 교과서 실습을 시작하세요.
"tkinter 없음"이 뜬다면
Windows·macOS의 python.org 설치본에는 tkinter가 기본 포함입니다. 리눅스를 쓰거나 이 메시지가 나오면 아래를 실행하세요.
sudo apt install python3-tk
터미널을 여는 단축키
Ctrl+` (숫자 1 왼쪽의 키)로 아래쪽 터미널을 열고 닫습니다. 앞으로 pip install 같은 명령은 전부 여기에 입력합니다.
확인
교과서 소스로 동작 테스트하기
환경이 잘 잡혔는지는 실제 수업 코드로 확인하는 게 가장 확실합니다. 1단원의 모듈 임포트와 2단원의 GUI 창을 각각 돌려 봅니다.
테스트 1 · 1단원 모듈 임포트
ch01-module 폴더에 파일 두 개를 같은 위치에 만듭니다. 폴더가 다르면 임포트에 실패합니다.
def hello():
print("안녕하세요")
def bye():
print("안녕히 가세요")
if __name__ == "__main__":
print("greet 모듈을 직접 실행했습니다.")
import greet
greet.hello()
greet.bye()
print("__name__ 값:", __name__)
제대로 됐는지 확인
greetmain.py를 실행했을 때 아래 세 줄이 나오면 성공입니다. 1단원에서 배운 대로 greet.py의 if __name__ 아래 문장은 실행되지 않습니다.
안녕하세요
안녕히 가세요
__name__ 값: __main__
ModuleNotFoundError: No module named 'greet'
두 파일이 다른 폴더에 있거나, VS Code가 다른 폴더를 열어 둔 상태입니다. 왼쪽 탐색기에서 두 파일이 같은 폴더에 나란히 보이는지 확인하세요.
테스트 2 · 2단원 GUI 창
import tkinter as tk
def say_hello():
label.config(text="환경 설정 성공!")
print("버튼이 눌렸습니다")
window = tk.Tk()
window.title("환경 테스트")
window.geometry("360x180")
label = tk.Label(window, text="아래 버튼을 눌러 보세요", font=("맑은 고딕", 13))
label.pack(expand=1)
btn = tk.Button(window, text="클릭", command=say_hello)
btn.pack(pady=16)
window.mainloop()
제대로 됐는지 확인
- 360×180 크기의 창이 뜬다
- 클릭 버튼을 누르면 글자가 "환경 설정 성공!"으로 바뀐다
- 터미널에도 "버튼이 눌렸습니다"가 출력된다
세 가지가 모두 되면 2단원 GUI 실습을 진행할 수 있는 상태입니다. 창은 오른쪽 위 X로 닫습니다.
창이 떴다가 바로 사라진다면
맨 마지막 줄 window.mainloop()가 빠졌거나 들여쓰기 안으로 들어간 것입니다. 2단원에서 배운 그대로, mainloop가 없으면 프로그램이 곧바로 끝납니다.
테스트 3 · 패키지 구조
1단원 후반의 패키지 실습이 되는지도 확인해 둡니다. 아래 구조로 폴더와 파일을 만드세요.
ch01-module/
main_nature.py
nature/
__init__.py
animals/
__init__.py
bird.py
def wild():
print("새는 동물입니다.")
from nature.animals import bird
bird.wild()
제대로 됐는지 확인
새는 동물입니다.가 출력되면 성공입니다. __init__.py는 내용이 비어 있어도 됩니다. 파일 이름을 init.py처럼 밑줄 없이 만들면 안 됩니다.
확인
디버깅 기초 — 코드를 멈춰 세우고 들여다보기
print()를 여기저기 넣어 값을 찍어 보는 대신, 코드를 원하는 줄에서 멈춰 세우고 그 순간의 변수를 전부 살펴보는 방법입니다. 익히면 오류 찾는 시간이 크게 줄어듭니다.
연습용 코드
일부러 결과가 틀리게 만든 코드입니다. 어디가 잘못됐는지 눈으로 찾지 말고 디버거로 찾아보세요.
def average(numbers):
total = 0
for n in numbers:
total = n # <- 여기에 문제가 있습니다
return total / len(numbers)
def grade(score):
if score >= 90:
return "A"
elif score >= 80:
return "B"
elif score >= 70:
return "C"
else:
return "D"
scores = [88, 92, 76, 95, 61]
avg = average(scores)
print("평균:", avg)
print("학점:", grade(avg))
실행하면 평균이 12.2로 나옵니다. 실제 평균은 82.4여야 하죠.
1. 중단점 걸기
코드 줄 번호 왼쪽 여백을 클릭하면 빨간 점이 생깁니다. 이것이 중단점(breakpoint)이고, 프로그램은 그 줄을 실행하기 직전에 멈춥니다. 키보드로는 커서를 그 줄에 두고 F9를 누르면 됩니다.
연습에서는 total = n 줄에 중단점을 거세요.
2. 디버깅 시작하기
F5를 누릅니다. 처음 누르면 어떤 방식으로 실행할지 물어보는데 Python 파일을 고르세요. 프로그램이 중단점에서 멈추고 그 줄이 노란색으로 표시됩니다.
3. 멈춘 상태에서 보는 것들
| 영역 | 보는 내용 |
|---|---|
| 변수 | 지금 살아 있는 모든 변수와 값. numbers, total, n이 보입니다. |
| 조사식 | 내가 계속 지켜보고 싶은 식을 등록해 둡니다. 예: total / len(numbers) |
| 호출 스택 | 지금 이 줄에 어떤 경로로 도달했는지. average 아래에 <module>이 보입니다. |
| 디버그 콘솔 | 멈춘 상태에서 아무 파이썬 식이나 입력해 즉석에서 결과를 볼 수 있습니다. |
마우스를 변수 위에 올려 보세요
멈춘 상태에서 코드 안의 변수 이름 위에 마우스를 올리면 현재 값이 말풍선으로 뜹니다. 가장 빠른 확인 방법입니다.
4. 한 줄씩 진행하기
| 단축키 | 이름 | 동작 |
|---|---|---|
| F10 | 단위 실행 | 다음 줄로 넘어갑니다. 함수 호출은 안으로 들어가지 않고 통째로 실행합니다. |
| F11 | 한 단계씩 코드 실행 | 함수 호출을 만나면 그 함수 안으로 들어갑니다. |
| Shift+F11 | 프로시저 나가기 | 지금 함수를 끝까지 실행하고 호출한 자리로 돌아옵니다. |
| F5 | 계속 | 다음 중단점까지 쭉 실행합니다. |
| Shift+F5 | 중지 | 디버깅을 끝냅니다. |
직접 해 보기
F5로 멈춘 뒤 F10을 여러 번 누르면서 변수 영역의 total을 지켜보세요. 반복할 때마다 값이 쌓이지 않고 88 → 92 → 76처럼 덮어써지는 것이 보입니다. 원인을 찾았습니다. total = n을 total = total + n으로 고치고 다시 실행하면 평균 82.4, 학점 B가 나옵니다.
확인
디버깅 심화 — 조건, 로그, 예외, 실행 설정
반복문이 1000번 도는데 F10을 1000번 누를 수는 없습니다. 원하는 순간에만 멈추게 만드는 방법을 배웁니다.
조건부 중단점
중단점(빨간 점)을 오른쪽 클릭 → 중단점 편집을 고르면 조건을 입력할 수 있습니다.
n > 90 # n이 90보다 클 때만 멈춤
name == "홍길동" # 특정 값일 때만 멈춤
i % 100 == 0 # 100번마다 한 번씩 멈춤
같은 메뉴의 적중 횟수를 쓰면 "5번째로 이 줄에 왔을 때만 멈춰"도 가능합니다.
로그 지점
멈추지는 않고 메시지만 출력하는 중단점입니다. print()를 코드에 넣었다가 지우는 수고를 없애 줍니다. 중단점 오른쪽 클릭 → 로그 지점 추가를 고르고 아래처럼 적습니다. 중괄호 안은 식으로 계산됩니다.
지금 n={n}, total={total}
로그 지점의 진짜 장점
코드 파일을 전혀 건드리지 않습니다. 제출용 코드에 디버깅용 print가 남아 감점되는 일이 없어집니다.
예외에서 멈추기
실행 및 디버그 화면(Ctrl+Shift+D) 아래쪽 중단점 영역에 체크 상자가 있습니다.
- Uncaught Exceptions — 처리되지 않은 오류가 났을 때 그 자리에서 멈춥니다. 오류 메시지만 보고 원인을 못 찾을 때 켜세요.
- Raised Exceptions —
try/except로 잡히는 오류에서도 멈춥니다. 켜 두면 자주 멈추니 필요할 때만 씁니다.
1단원 예외 처리 단원의 코드를 이걸 켜고 돌려 보면, except가 어떤 순간에 동작하는지 눈으로 볼 수 있습니다.
launch.json — 실행 방법을 저장해 두기
매번 같은 파일을 같은 옵션으로 실행한다면 설정을 파일로 저장해 둘 수 있습니다. 실행 및 디버그 화면에서 launch.json 파일 만들기를 누르면 .vscode/launch.json이 생깁니다.
{
"version": "0.2.0",
"configurations": [
{
"name": "현재 파일 실행",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true
},
{
"name": "sysmodule 실습 (인자 전달)",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/sysmodule.py",
"args": ["param1", "param2"],
"console": "integratedTerminal"
}
]
}
| 항목 | 의미 |
|---|---|
program | 실행할 파일. ${file}은 지금 열어 둔 파일, ${workspaceFolder}는 작업 폴더입니다. |
args | 1단원 sys.argv 실습에서 쓰는 실행 인자입니다. 여기 적어 두면 매번 입력할 필요가 없습니다. |
console | integratedTerminal로 두어야 input()으로 값을 받을 수 있습니다. |
justMyCode | true면 내가 쓴 코드에서만 멈춥니다. 라이브러리 내부까지 보려면 false로 바꿉니다. |
제대로 됐는지 확인
실행 및 디버그 화면 위쪽 드롭다운에 방금 적은 이름(현재 파일 실행, sysmodule 실습)이 보이면 됩니다. 골라서 F5를 누르면 그 설정으로 실행됩니다.
확인
실행 속도 재기와 프로파일링
"왜 이렇게 느리지?"를 감으로 추측하지 않고 숫자로 확인하는 방법입니다. 어느 함수가 시간을 잡아먹는지 정확히 알려 줍니다.
연습용 코드
import random
def make_data(n):
return [random.randint(1, 1000000) for _ in range(n)]
def slow_contains(data, target):
"""리스트를 처음부터 끝까지 훑는다."""
for item in data:
if item == target:
return True
return False
def fast_contains(data_set, target):
"""집합에서 바로 찾는다."""
return target in data_set
def main():
data = make_data(200000)
data_set = set(data)
targets = make_data(300)
found_slow = sum(slow_contains(data, t) for t in targets)
found_fast = sum(fast_contains(data_set, t) for t in targets)
print("느린 방법 결과:", found_slow)
print("빠른 방법 결과:", found_fast)
if __name__ == "__main__":
main()
1. 가장 간단한 방법 — 시간 재기
import time
start = time.perf_counter()
main()
print(f"걸린 시간: {time.perf_counter() - start:.3f}초")
전체 시간은 알 수 있지만 어디가 느린지는 모릅니다. 그럴 때 프로파일러를 씁니다.
2. cProfile — 함수별로 시간 쪼개 보기
터미널(Ctrl+`)에서 실행합니다. 파이썬에 기본 내장이라 설치가 필요 없습니다.
python -m cProfile -s cumtime slow_search.py
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 3.412 3.412 slow_search.py:22(main)
300 3.180 0.011 3.180 0.011 slow_search.py:9(slow_contains)
300 0.000 0.000 0.000 0.000 slow_search.py:16(fast_contains)
| 항목 | 의미 |
|---|---|
ncalls | 몇 번 호출됐는지 |
tottime | 그 함수 자체에서 쓴 시간 (안에서 부른 다른 함수 제외) |
cumtime | 그 함수가 끝날 때까지 걸린 총 시간 (안에서 부른 것 포함) |
여기서 읽어 낼 것
slow_contains가 tottime 3.18초로 전체의 대부분을 차지합니다. fast_contains는 같은 횟수를 돌고도 0초에 가깝습니다. 리스트 탐색과 집합 탐색의 차이를 숫자로 확인한 것입니다.
3. 결과를 그림으로 보기 — snakeviz
pip install snakeviz
python -m cProfile -o result.prof slow_search.py
snakeviz result.prof
브라우저가 열리면서 어느 함수가 시간을 얼마나 차지하는지 면적으로 보여 줍니다. 숫자표보다 한눈에 들어옵니다.
4. 짧은 코드 두 개 비교 — timeit
python -m timeit -s "d=list(range(100000))" "99999 in d"
python -m timeit -s "d=set(range(100000))" "99999 in d"
같은 일을 하는 두 코드의 속도를 자동으로 여러 번 돌려 평균을 내 줍니다. 결과 차이가 수백 배까지 벌어지는 것을 볼 수 있습니다.
언제 쓰면 되나요
수업 예제 수준에서는 속도가 문제되지 않습니다. 하지만 3단원 머신러닝처럼 데이터가 커지면 "돌아가긴 하는데 10분이 걸린다" 같은 상황이 옵니다. 그때 감으로 코드를 뜯어고치지 말고 먼저 재 보세요.
확인
GitHub Copilot 켜고 제대로 쓰기
02단계의 학생 인증이 승인되어 있어야 합니다. Copilot은 코드를 대신 써 주는 도구가 아니라, 내가 이해한 것을 빨리 옮기고 모르는 것을 물어보는 도구입니다.
1. 설치하고 로그인하기
- 확장 화면에서
GitHub Copilot을 검색해 설치합니다. GitHub Copilot Chat도 함께 설치하세요. - 왼쪽 아래 계정 아이콘을 눌러 GitHub에 로그인을 고릅니다.
- 브라우저가 열리면 학생 인증을 받은 그 계정으로 로그인하고 권한을 승인합니다.
- VS Code로 돌아오면 자동으로 연결됩니다.
제대로 됐는지 확인
오른쪽 아래 상태 표시줄에 Copilot 아이콘이 나타납니다. 아이콘을 눌렀을 때 "사용 중"으로 보이면 정상이고, 빗금이 그어져 있으면 꺼져 있거나 로그인이 안 된 상태입니다.
로그인은 됐는데 제안이 안 뜬다면
- 학생 인증이 아직 심사 중일 수 있습니다. github.com/settings/copilot에서 상태를 확인하세요.
- 학생용 Copilot 정책은 자주 바뀝니다. 제공 등급과 사용량 한도는 위 설정 화면의 안내를 기준으로 삼으세요.
- 학교 네트워크가 막고 있을 수 있습니다. 개인 테더링으로 한 번 시도해 보면 원인을 가릴 수 있습니다.
2. 인라인 제안 — 타이핑하면서 받는 도움
코드를 치고 있으면 회색 글씨로 이어질 코드가 미리 보입니다.
| 단축키 | 동작 |
|---|---|
| Tab | 제안을 받아들입니다 |
| Esc | 제안을 무시합니다 |
| Alt+] / Alt+[ | 다른 제안으로 넘기기 |
| Ctrl+→ | 제안을 단어 하나씩만 받아들이기 |
주석으로 지시하면 잘 알아듣습니다
아래처럼 한글 주석을 쓰고 줄을 바꾸면 Copilot이 함수 본문을 제안합니다. 무엇을 만들지 내가 먼저 정하고 시키는 것이 핵심입니다.
# 반지름을 받아 원의 넓이를 반환하는 함수. 원주율은 math.pi를 쓴다.
def circle_area(r):
3. Copilot Chat — 물어보기
Ctrl+Alt+I로 채팅 화면을 열거나, 코드를 선택한 뒤 Ctrl+I로 그 자리에서 바로 물어봅니다. 아래 명령을 앞에 붙이면 의도가 정확히 전달됩니다.
| 명령 | 쓰는 상황 |
|---|---|
/explain | 선택한 코드가 무슨 일을 하는지 설명받기. 교과서 코드를 이해할 때 유용합니다. |
/fix | 오류가 나는 코드를 고쳐 달라고 하기 |
/tests | 내가 쓴 함수의 테스트 코드를 만들어 달라고 하기 |
/doc | 함수 설명(독스트링)을 붙여 달라고 하기 |
@workspace | 지금 폴더 전체를 참고해서 답하게 하기. "이 프로젝트에서 greet 모듈을 어디서 쓰지?" |
#file:파일명 | 특정 파일을 콕 집어 참고시키기 |
4. 수업에서 쓸 만한 질문 예시
/explain 이 코드에서 if __name__ == "__main__" 이 하는 일을
중학생도 알아듣게 설명해 줘
이 오류가 왜 나는지 원인만 먼저 말해 줘. 코드는 아직 고치지 마.
ModuleNotFoundError: No module named 'greet'
tkinter로 만든 이 창에 "저장" 버튼을 하나 더 넣고 싶어.
전체 코드를 다시 주지 말고 추가할 줄만 알려 줘.
/tests average 함수에 대한 테스트를 만들어 줘
이건 하지 마세요
- 과제 전체를 통째로 맡기기. 코드는 나오지만 설명은 못 합니다. 평가는 설명으로 합니다.
- 이해 못 한 코드를 그대로 붙여 넣기. 최소한
/explain으로 한 번은 읽고 넘어가세요. - 개인정보·비밀번호·API 키를 채팅에 붙여 넣기. 학번, 주민번호, 계정 정보는 절대 넣지 않습니다.
- Copilot 답을 검증 없이 믿기. 없는 함수 이름을 지어내는 일이 자주 있습니다. 반드시 실행해서 확인하세요.
잘 쓰는 방법 세 가지
- 먼저 내가 30분 붙잡아 본 뒤 물어보면 답을 이해할 수 있습니다. 처음부터 물으면 답을 읽어도 남는 게 없습니다.
- "고쳐 줘" 대신 "왜 틀렸는지 알려 줘"라고 물으면 다음에 스스로 고칠 수 있게 됩니다.
- 받은 코드는 중단점을 걸고 한 줄씩 돌려 보세요. 09단계에서 배운 디버깅이 여기서 쓰입니다.
확인
다른 AI 모델(LLM) 연결하기
Copilot 말고 다른 모델을 쓰거나, 인터넷 없이 내 컴퓨터에서 도는 모델을 붙이는 방법입니다. 필수는 아니지만 원리를 알아 두면 도구 선택의 폭이 넓어집니다.
방법 1 · Copilot 안에서 모델 바꾸기
Copilot Chat 입력창 아래에 모델 선택 메뉴가 있습니다. 요금제에 따라 고를 수 있는 모델이 다릅니다.
학생 무료 등급에서는 선택지가 제한될 수 있습니다
2026년 들어 학생용 무료 등급은 모델을 자동으로 배정하고 수동 선택은 막아 두는 방향으로 바뀌었습니다. 정책이 계속 바뀌고 있으니, 내 계정에서 무엇이 가능한지는 Copilot 설정 화면에서 직접 확인하세요. 메뉴가 안 보이면 지금 등급에서 지원하지 않는 것입니다.
방법 2 · 내 API 키로 다른 회사 모델 붙이기
OpenAI, Anthropic, Google 등에서 발급받은 API 키를 VS Code에 등록해 쓰는 방식입니다. 채팅 모델 선택 메뉴의 모델 관리에서 제공자를 고르고 키를 넣습니다.
API 키는 돈이 나가는 열쇠입니다
- 사용한 만큼 요금이 청구됩니다. 학생 개인이 쓸 때는 결제 한도를 반드시 걸어 두세요.
- API 키를 코드 안에 적어서 GitHub에 올리면 안 됩니다. 공개 저장소에 올라간 키는 몇 분 안에 도용됩니다.
- 수업 실습에서는 학교 계정·개인 키를 섞어 쓰지 말고, 선생님 안내를 따르세요.
코드에서 키를 쓸 때는 환경 변수로 분리합니다.
MY_API_KEY=여기에_키를_붙여넣기
.env
.venv/
__pycache__/
*.prof
import os
key = os.environ.get("MY_API_KEY")
if not key:
print("환경 변수 MY_API_KEY가 설정되지 않았습니다.")
else:
print("키를 정상적으로 읽었습니다. 길이:", len(key))
방법 3 · 내 컴퓨터에서 도는 모델 (Ollama)
인터넷 연결이나 요금 없이, 내 컴퓨터 안에서 모델을 직접 돌리는 방법입니다. PC 사양을 꽤 탑니다.
- ollama.com에서 설치합니다.
- 터미널에서 모델을 내려받아 실행해 봅니다.
ollama run qwen2.5-coder:7b
그다음 VS Code에 Continue 확장(Continue.continue)을 설치하고 설정에서 제공자를 ollama로 지정하면, Copilot과 비슷한 채팅·자동 완성을 로컬 모델로 쓸 수 있습니다.
방법 4 · 학교 Ollama 서버에 접속하기
선생님이 학교에 Ollama 서버를 만들어 두셨다면, 내 PC 사양과 상관없이 그 서버의 모델을 가져다 쓸 수 있습니다. 설치할 것도 거의 없습니다. 내려받는 곳만 내 컴퓨터에서 학교 서버로 바꾸는 것이 전부입니다.
1. 선생님께 받아야 할 정보
| 항목 | 예시 | 설명 |
|---|---|---|
| 서버 주소 | 192.168.0.50 | 학교 내부망 주소이거나 ollama.e-mirim.hs.kr 같은 이름일 수 있습니다. |
| 포트 | 11434 | Ollama 기본 포트입니다. 다르게 열어 두셨다면 그 번호를 받으세요. |
| 쓸 수 있는 모델 | qwen2.5-coder:7b | 서버에 미리 받아 둔 모델만 쓸 수 있습니다. 이름을 정확히 받아 적으세요. |
| 접속 조건 | 교내 와이파이만 | 보통 학교 안에서만 접속됩니다. 집에서는 안 될 수 있습니다. |
http://까지 포함해서 적습니다. 이 값은 이 브라우저에만 저장됩니다.
2. 접속되는지 먼저 확인
설정을 만지기 전에 서버가 살아 있는지부터 봅니다. 브라우저 주소창에 아래를 그대로 입력하세요.
http://192.168.0.50:11434
Ollama is running이라는 짧은 글자만 보이면 연결에 성공한 것입니다. 이번엔 어떤 모델이 올라가 있는지 봅니다.
http://192.168.0.50:11434/api/tags
{"models":[{"name":"qwen2.5-coder:7b", ... },
{"name":"llama3.1:8b", ... }]}
여기 보이는 name 값이 내가 설정에 적을 모델 이름입니다. 터미널에서 확인하려면 아래를 씁니다.
curl http://192.168.0.50:11434/api/tags
Windows PowerShell에서는
PowerShell의 curl은 다른 명령이라 결과가 이상하게 보일 수 있습니다. curl.exe로 정확히 지정하거나 아래를 쓰세요.
Invoke-RestMethod http://192.168.0.50:11434/api/tags
3. 터미널에서 서버 모델 쓰기
Ollama 프로그램을 설치했다면, 명령이 어디를 바라볼지 OLLAMA_HOST 환경 변수로 정할 수 있습니다. 지금 열어 둔 터미널에서만 적용되는 임시 설정입니다.
set OLLAMA_HOST=http://192.168.0.50:11434
ollama list
ollama run qwen2.5-coder:7b
export OLLAMA_HOST=http://192.168.0.50:11434
ollama list
ollama run qwen2.5-coder:7b
터미널을 닫아도 유지하려면
Windows는 setx OLLAMA_HOST "주소"를 한 번 실행한 뒤 터미널을 새로 엽니다. macOS·리눅스는 ~/.zshrc나 ~/.bashrc 맨 아래에 위의 export 줄을 추가합니다. 다만 집에 가면 접속이 안 되니 그때는 이 설정을 지우거나 주석 처리하세요.
서버에서는 모델을 함부로 받지 마세요
OLLAMA_HOST를 학교 서버로 맞춘 상태에서 ollama pull이나 ollama rm을 실행하면 내 컴퓨터가 아니라 학교 서버가 바뀝니다. 모델을 추가하고 싶다면 선생님께 먼저 여쭤보세요.
4. VS Code에 붙이기 (Continue 확장)
- 확장 화면에서 Continue(
Continue.continue)를 설치합니다. - Ctrl+Shift+P →
Continue: Open Config를 실행해 설정 파일을 엽니다. - 아래 내용을 참고해 모델을 추가하고 저장합니다.
models:
- name: 학교 서버 코더
provider: ollama
model: qwen2.5-coder:7b
apiBase: http://192.168.0.50:11434
{
"models": [
{
"title": "학교 서버 코더",
"provider": "ollama",
"model": "qwen2.5-coder:7b",
"apiBase": "http://192.168.0.50:11434"
}
]
}
설정 파일 형식은 버전에 따라 다릅니다
Continue는 config.json에서 config.yaml로 형식을 바꿔 왔습니다. 위 두 가지 중 지금 열린 파일과 같은 형식을 골라 쓰세요. 어느 쪽이든 필요한 값은 똑같습니다.
provider—ollama고정model— 2번에서 확인한 모델 이름apiBase— 선생님께 받은 서버 주소
확장의 모델 추가 화면(+ Add model)에서 Ollama를 고르고 주소를 넣는 방법도 있습니다. 파일 편집이 부담되면 그쪽이 더 쉽습니다.
제대로 됐는지 확인
Continue 채팅 창을 열고 모델 선택 목록에 학교 서버 코더가 보이면 됩니다. 파이썬에서 리스트와 튜플의 차이를 세 줄로 설명해 줘 정도를 물어보고 답이 오면 연결 성공입니다.
5. 연결이 안 될 때
| 증상 | 확인할 것 |
|---|---|
| 브라우저에서 사이트에 연결할 수 없음 | 학교 와이파이에 연결되어 있는지, 주소와 포트를 정확히 적었는지 확인합니다. 개인 테더링을 쓰고 있으면 접속되지 않습니다. |
Connection refused | 서버는 찾았지만 Ollama가 꺼져 있거나 그 포트로 열려 있지 않습니다. 선생님께 서버 상태를 여쭤보세요. |
| 한참 기다리다 시간 초과 | 방화벽이 막고 있을 가능성이 큽니다. 학교 담당 선생님께 포트 개방을 요청해야 합니다. |
model not found | 서버에 없는 모델 이름을 적었습니다. /api/tags로 목록을 다시 확인하세요. |
| 답이 오다가 자꾸 끊김 | 여러 명이 동시에 쓰면 순서를 기다리게 됩니다. 잠시 뒤 다시 시도하세요. |
공용 서버를 쓸 때의 약속
- 학급 전체가 한 대를 나눠 씁니다. 장난삼아 긴 글을 반복 생성시키면 다른 친구들이 못 씁니다.
- 서버 로그에 질문이 남을 수 있습니다. 개인정보나 남의 이야기를 넣지 마세요.
- 받은 주소를 학교 밖에 공유하지 않습니다.
선생님용 메모
서버 쪽 Ollama는 기본적으로 자기 컴퓨터에서만 접속을 받습니다. 다른 PC에서 붙게 하려면 서버에서 OLLAMA_HOST=0.0.0.0:11434로 실행해야 하고, 방화벽에서 해당 포트를 교내망에 한해 열어 두어야 합니다. 인터넷 전체에 노출하지 않도록 주의하세요.
| 구분 | 장점 | 단점 |
|---|---|---|
| Copilot | 설정이 가장 간단하고 품질이 안정적 | 인터넷 필요, 계정·요금제에 묶임 |
| API 키 연결 | 원하는 모델을 골라 쓸 수 있음 | 비용 발생, 키 관리 부담 |
| Ollama (내 PC) | 무료, 인터넷 불필요, 코드가 밖으로 안 나감 | PC 사양을 많이 탐, 품질이 낮을 수 있음 |
| Ollama (학교 서버) | 내 PC 사양과 무관, 설치가 거의 없음, 반 전체가 같은 모델을 씀 | 교내망에서만 접속, 여러 명이 동시에 쓰면 느려짐 |
사양 기준
내 PC에서 직접 돌린다면 7B 크기 모델은 RAM 16GB 정도면 동작하지만 CPU만으로는 느립니다. 그래픽카드(VRAM 8GB 이상)가 있으면 훨씬 쾌적합니다. 실습실 PC에서 설치하기 전에는 먼저 선생님께 여쭤보세요.
확인
자주 겪는 문제와 단축키
막혔을 때 여기부터 찾아보세요. 대부분 아래 표에 있습니다.
문제 해결
| 증상 | 해결 |
|---|---|
'python'은(는) 내부 또는 외부 명령이 아닙니다 | PATH 미설정. 03단계의 Modify 방법으로 다시 설정하고, 터미널을 껐다 새로 엽니다. |
ModuleNotFoundError: No module named 'xxx' | ① 파일이 다른 폴더에 있음 ② 인터프리터가 다른 것으로 선택됨 ③ 진짜로 설치가 안 됨. 순서대로 확인하세요. |
IndentationError | 탭과 공백이 섞였습니다. Ctrl+Shift+P → Convert Indentation to Spaces로 통일합니다. |
SyntaxError: invalid character | 한글 따옴표(“ ”)나 전각 괄호가 섞였습니다. 영문 따옴표로 다시 입력하세요. |
UnicodeDecodeError | 파일을 열 때 encoding='utf-8'을 빠뜨렸습니다. 2단원 메모장 실습에서 자주 납니다. |
| GUI 창이 떴다 바로 사라짐 | mainloop()가 없거나 들여쓰기 안으로 들어갔습니다. |
| 실행 버튼을 눌러도 예전 결과가 나옴 | 파일을 저장하지 않았습니다. Ctrl+S 후 다시 실행하세요. |
| 터미널 한글이 깨짐 | 터미널에서 chcp 65001을 실행하거나, VS Code 설정에서 터미널 인코딩을 UTF-8로 바꿉니다. |
| Copilot 제안이 안 뜸 | 상태 표시줄 아이콘 확인 → 로그인 상태 확인 → 학생 인증 승인 여부 확인 순서로 점검합니다. |
'git'은(는) 내부 또는 외부 명령이 아닙니다 | Git이 없거나 PATH가 안 잡혔습니다. 07단계에서 설치하고 터미널을 새로 여세요. |
Author identity unknown | 커밋할 이름·이메일이 없습니다. 07단계의 user.name, user.email을 설정하세요. |
| 커밋했는데 GitHub 잔디에 안 찍힘 | user.email이 GitHub 계정 이메일과 다릅니다. git config --global user.email로 확인하세요. |
Git에서 한글 파일명이 \355\225\234로 보임 | git config --global core.quotepath false를 실행합니다. |
꼭 외울 단축키
| 단축키 | 기능 |
|---|---|
| Ctrl+Shift+P | 명령 팔레트 — 이것만 알면 나머지는 검색으로 찾습니다 |
| Ctrl+` | 터미널 열기·닫기 |
| Ctrl+F5 | 디버깅 없이 실행 |
| F5 / F9 / F10 / F11 | 디버깅 시작 · 중단점 · 다음 줄 · 함수 안으로 |
| Ctrl+/ | 선택한 줄 주석 처리·해제 |
| Alt+↑ / ↓ | 현재 줄을 위아래로 옮기기 |
| Shift+Alt+F | 코드 자동 정렬 |
| Ctrl+D | 같은 단어를 하나씩 추가 선택해 한꺼번에 수정 |
| F2 | 변수·함수 이름을 쓰인 곳 전부 한 번에 바꾸기 |
| Ctrl+Alt+I | Copilot Chat 열기 |
그래도 안 되면
오류 메시지의 마지막 줄을 그대로 복사해서 검색하거나 Copilot에 물어보세요. 앞부분은 호출 경로라 사람마다 다르고, 진짜 원인은 마지막 줄에 있습니다. 그래도 안 풀리면 화면 캡처와 오류 전문을 가지고 선생님께 오세요.
0%
아직 진행 중입니다
체크 상자를 눌러 진행도를 기록하세요. 브라우저에 저장되므로 창을 닫았다 열어도 그대로 남습니다.