Devin.KR

AI 개발 · 기본

바이브 코딩 시대의 기본서 - 처음 AI 와 함께 만드는 프로그램

작업 환경 준비 - 폴더 하나, 터미널 하나, 실행 한 번

작업 폴더 만들기, 터미널에서 현재 위치·파일 목록 보기, Python 설치 확인, 파일 저장과 실행의 관계, 경로와 한글·띄어쓰기 함정, 에디터와 AI 도구가 같은 폴더를 보고 있는지 확인, 완성 코드는 현재 Python 버전·작업 폴더·쓰기 가능 여부를 점검해 준비 상태 표를 출력하는 점검기

개발자KR · 원고 갱신

이 장에서 배우는 것

앞 장에서 AI가 자연스럽게 설명하는 코드에도 틀린 부분이 있을 수 있음을 살펴보았다. 이제 그 코드를 직접 저장하고 실행할 자리를 마련한다. AI의 답을 읽는 것과 내 컴퓨터에서 프로그램을 실행하는 것은 서로 다른 일이다. 답변 창에 코드가 보인다고 해서 파일이 생기거나 프로그램이 실행되지는 않는다.

이 장의 목표는 여러 도구를 능숙하게 다루는 것이 아니다. 작업할 폴더 하나를 정하고, 그 위치에서 파일을 저장하고, 같은 파일을 실행하는 흐름을 익히는 것이다. 마지막에는 현재 Python의 버전 조건, 작업 폴더, 파일을 쓸 수 있는지를 확인하는 작은 점검기를 만든다.

  • 작업 폴더를 만들고 터미널에서 현재 위치와 파일 목록을 확인한다.
  • Python이 설치되어 있는지 확인하고 이 책의 실행 조건과 비교한다.
  • 편집 중인 내용, 저장된 파일, 실행되는 파일의 관계를 구별한다.
  • 에디터와 AI 도구, 터미널이 같은 작업 폴더를 가리키는지 확인한다.
  • 점검기의 결과를 읽고 준비되지 않은 항목을 찾아낸다.

문제 상황

AI에게 받은 코드를 에디터에 붙여 넣었다. 에디터는 글이나 코드를 고쳐서 파일로 저장하는 프로그램이다. 파일 이름을 main.py로 정하고 터미널에서 실행했는데, 파일을 찾을 수 없다는 메시지가 나온다. 화면에는 분명히 코드가 보인다. 그런데 컴퓨터는 왜 파일이 없다고 할까.

살펴보니 에디터에서는 바탕 화면의 연습 폴더를 열었지만 터미널은 개인 홈 폴더에 머물러 있었다. 홈 폴더는 내 계정의 파일을 모아 두는 기본 폴더다. 터미널은 에디터 화면을 보고 파일을 찾아주지 않는다. 명령을 실행하는 현재 위치를 기준으로 파일을 찾는다.

위치를 고친 뒤에는 다른 일이 생긴다. 화면의 문장을 수정했는데 실행 결과는 예전과 같다. 이번에는 저장을 빠뜨렸다. 에디터 화면에는 새 내용이 있지만 디스크에 기록된 main.py에는 이전 내용이 남아 있다. Python은 저장된 파일을 읽으므로 이전 문장을 출력한다.

AI에게 다시 코드를 만들어 달라고 하기 전에 확인할 것은 세 가지다. 어디에 있는가, 어떤 파일을 저장했는가, 어느 파일을 실행했는가다. 이 세 가지를 먼저 맞추면 코드 자체의 문제와 작업 환경의 문제를 구분할 수 있다.

작업 폴더와 터미널의 현재 위치

작업 폴더는 이번 프로그램에 필요한 파일을 모아 두는 폴더다. 처음에는 main.py 하나만 둔다. 여러 연습의 파일을 한 폴더에 섞어 두면 이름이 같은 파일을 덮어쓰거나 다른 파일을 실행하기 쉽다. 이번 연습에는 vibe-start라는 새 폴더를 사용한다.

터미널은 글자로 명령을 입력하고 결과를 읽는 창이다. macOS나 Linux에서 터미널을 열면 입력을 기다리는 표시가 나온다. 그 표시는 컴퓨터마다 다를 수 있다. 책에 나온 명령만 입력하고, 화면에 이미 있는 대기 표시는 따라 쓰지 않는다.

다음 명령을 한 줄씩 입력한다. 각 줄 끝에서 Enter를 누른다. 홈 폴더 아래에 같은 이름의 폴더가 이미 있다면 새 이름을 정하고 이후 명령에도 그 이름을 사용한다.

cd ~

mkdir vibe-start

cd vibe-start

pwd

ls

cd는 현재 위치를 바꾸는 명령이다. 물결표인 ~는 홈 폴더를 가리킨다. mkdir는 폴더를 만들고, pwd는 현재 위치를 출력하며, ls는 현재 폴더의 파일과 하위 폴더 이름을 보여 준다. 새로 만든 빈 폴더에서 ls를 실행했을 때 아무 이름도 나오지 않는 것은 정상이다.

pwd의 결과는 사람마다 다르다. macOS에서는 /Users/내계정/vibe-start와 비슷하고, Linux에서는 /home/내계정/vibe-start와 비슷할 수 있다. 여기서 계정 이름을 책과 똑같이 맞추려 하지 않는다. 마지막 폴더가 자신이 만든 vibe-start인지 확인한다.

현재 위치와 파일을 확인하는 기본 명령
명령하는 일확인할 내용
pwd현재 위치를 출력한다.작업 폴더 안에 있는가.
ls현재 폴더의 목록을 보여 준다.저장한 main.py가 보이는가.
cd ..바로 위 폴더로 이동한다.이동 후 pwd로 위치를 다시 확인한다.
python3 main.py현재 폴더의 파일을 실행한다.실행할 파일이 그 위치에 있는가.

경로(path)는 파일이나 폴더의 위치를 적은 문자열이다. /로 시작하는 절대 경로는 맨 위 폴더부터 위치를 적는다. 상대 경로는 현재 위치를 기준으로 적는다. main.py는 현재 폴더 안의 파일을 뜻하는 상대 경로이고, ../main.py는 바로 위 폴더의 파일을 뜻한다. 같은 main.py라는 이름이라도 현재 위치가 달라지면 가리키는 파일이 달라질 수 있다.

상대 경로 main.py가 가리키는 파일은 터미널의 현재 위치에 따라 달라진다.

폴더 이름에 한글이 들어간다고 Python 프로그램이 곧바로 잘못되는 것은 아니다. Python은 한글 경로도 다룰 수 있다. 다만 처음에는 영문 소문자와 하이픈으로 짧게 이름을 지으면 입력 과정에서 확인할 것이 줄어든다. 한글은 잘못된 이름이 아니라, 도구 사이에서 같은 경로가 전달되는지 살펴볼 때 확인할 요소다.

띄어쓰기가 있는 경로는 터미널에서 특히 주의한다. 명령을 해석하는 프로그램인 셸(shell)은 보통 공백을 기준으로 입력을 나눈다. 따라서 폴더 이름 전체를 따옴표로 묶어야 한다. 다음 두 줄 중 두 번째 줄은 my work 전체를 하나의 폴더 이름으로 전달한다.

잘못된 예: cd my work

고친 예: cd "my work"

따옴표는 키보드로 입력하는 곧은 큰따옴표를 쓴다. 문서 편집기가 바꾸어 놓은 둥근 따옴표를 그대로 붙여 넣으면 셸이 같은 뜻으로 해석하지 않을 수 있다. 파일 이름의 대문자와 소문자도 저장한 그대로 입력한다. 운영체제와 저장 장치 설정에 따라 main.py와 Main.py를 다르게 취급할 수 있다.

Python 확인과 저장한 파일의 실행

Python은 우리가 작성한 Python 코드를 읽고 실행하는 프로그램의 이름이기도 하다. 터미널에서 다음 명령으로 설치 여부를 확인한다. 이 명령은 파일을 실행하는 대신 Python 자신의 버전을 출력한다.

python3 --version

결과가 Python 3.12.로 시작하거나 그보다 새로운 버전이면 이 책의 조건에 맞는다. 버전은 앞 숫자부터 차례로 비교한다. 3.9는 3.12보다 이전이고, 3.13은 이후다. 소수처럼 비교하지 않는다. 실제로 표시되는 마지막 숫자는 설치된 버전에 따라 다르다.

명령을 찾을 수 없다는 메시지가 나오면 현재 터미널에서 python3를 실행할 수 없는 상태다. 이때는 코드를 고치지 않는다. Python 공식 배포 안내나 사용 중인 Linux의 설치 안내에 따라 Python 3.12 이상을 설치한다. 설치 프로그램이 안내하는 작업을 마친 뒤 터미널을 새로 열고 같은 명령을 다시 실행한다. macOS의 설치 안내는 Python 공식 다운로드 안내에서 확인할 수 있다. 설치 과정에서 제시되지 않은 시스템 파일 삭제 명령을 임의로 실행하지 않는다.

이제 에디터에서 vibe-start 폴더를 연다. 새 파일을 만들고 이름을 main.py로 정한다. .py는 Python 코드 파일에 붙이는 확장자다. 일반 문서처럼 꾸밈을 저장하는 형식이 아니라, 글자만 저장하는 일반 텍스트 파일로 저장한다. 한글을 저장하는 문자 인코딩은 UTF-8을 사용한다. 인코딩은 글자를 파일 속 숫자로 기록하는 방식이다.

에디터가 파일 이름에 .txt를 덧붙이지 않았는지도 확인한다. 화면에 이름 일부가 생략되어 있을 수 있으므로 터미널의 ls 결과로 실제 이름을 확인한다. main.py.txt는 main.py와 다른 이름이다.

저장과 실행의 관계를 먼저 작은 코드로 확인한다. 다음 내용을 main.py에 넣고 저장한다.

print("저장한 파일을 실행했다.")

print는 괄호 안의 내용을 화면에 출력한다. 큰따옴표로 감싼 부분은 그대로 출력할 글자다. 다음 명령을 터미널에서 실행한다.

python3 main.py

저장한 파일을 실행했다.

화면의 문장을 바꾸고 다시 저장한 다음 같은 명령을 실행해 본다. 새 문장이 나오면 편집, 저장, 실행의 연결이 확인된 것이다. 자동 저장 기능이 있더라도 지금은 저장 동작을 직접 하고 결과가 달라지는지 확인한다.

Python은 에디터의 미저장 내용이 아니라 디스크에 저장된 main.py를 읽어 실행한다.

에디터와 AI 도구가 보는 폴더 맞추기

에디터에 열린 폴더와 터미널의 현재 폴더는 별도로 확인해야 한다. 에디터 안에 터미널이 붙어 있어도 위치가 항상 같다고 가정하지 않는다. 에디터에서 열린 main.py의 전체 경로를 확인하고, 터미널의 pwd 결과 뒤에 /main.py를 붙인 위치와 비교한다.

AI 도구도 구별해야 한다. 대화창에 코드만 제공하는 도구는 내 컴퓨터의 파일을 직접 보거나 저장하지 못할 수 있다. 파일을 읽고 수정하는 기능이 있는 도구라도 어떤 폴더를 열었는지가 중요하다. 기능 이름이나 버튼 위치보다 실제로 읽고 쓴 파일의 경로를 확인한다.

AI에게는 다음처럼 확인을 요청할 수 있다. 이것은 실행 명령이 아니라 AI에게 보내는 말이다.

이번 작업 폴더는 내가 연 vibe-start 폴더다. 파일을 볼 수 있다면 현재 작업 폴더의 전체 경로와 main.py가 있는지 알려 달라. 파일에 접근할 수 없다면 접근할 수 없다고 말해 달라. 아직 파일은 수정하지 말라.

답에 경로가 나온다고 확인이 끝난 것은 아니다. 터미널에서 직접 본 위치 및 목록과 비교한다. AI가 접근할 수 없다고 하면 코드를 받아 직접 저장하면 된다. 접근할 수 있다고 하면 변경 후 실제 파일이 바뀌었는지 살핀다.

이미 파일이 있을 때는 수정 전후의 차이를 확인한다. 이런 차이 표시를 diff라고 부른다. 에디터가 제공하는 비교 화면에서 어느 줄이 추가되고 지워졌는지 읽는다. 이번에는 앞에서 만든 한 줄짜리 코드를 아래 점검기로 교체하므로 내용 전체가 바뀌는 것이 예상한 차이다. 이후 작은 수정을 요청했는데 전체 파일이 바뀐다면 실행 전에 내용을 다시 살핀다.

완성할 점검기는 AI 도구의 내부 상태까지 알아내지는 못한다. 자신을 실행한 Python의 버전 조건, 터미널의 현재 위치와 코드 파일의 위치가 같은지, 현재 폴더에 임시 파일을 쓸 수 있는지만 확인한다. 도구가 같은 폴더를 보고 있는지는 사람이 경로를 대조해야 한다.

완성 코드

main.py의 내용을 다음 코드로 바꾸고 저장한다. 빈 줄을 포함해 58줄이며 외부 패키지를 설치할 필요가 없다. 표준 라이브러리는 Python에 함께 들어 있는 도구 모음이다. 이 프로그램은 그 도구만 사용한다.

버전은 실행 중인 Python의 실제 버전 정보를 읽어 3.12 이상인지 판정한다. 출력에는 상세 버전 번호와 개인 경로 대신 조건 충족 여부를 표시한다. 따라서 같은 준비 상태에서는 같은 표가 나온다. 컴퓨터의 준비 상태가 다르면 해당 판정도 달라진다.

import sys
import tempfile
from pathlib import Path


def check_write(folder):
    try:
        with tempfile.TemporaryDirectory(
            prefix="vibe-check-", dir=folder
        ) as temporary:
            test_file = Path(temporary) / "probe.txt"
            message = "준비 확인"
            test_file.write_text(message, encoding="utf-8")
            saved = test_file.read_text(encoding="utf-8")
            if saved != message:
                return False
        return True
    except OSError:
        return False


def main():
    version_ok = sys.version_info >= (3, 12)
    current_folder = Path.cwd().resolve()
    script_folder = Path(__file__).resolve().parent
    folder_ok = current_folder == script_folder
    write_ok = check_write(current_folder)

    rows = [
        (
            "Python 버전",
            "통과" if version_ok else "확인 필요",
            "3.12 이상" if version_ok else "3.12 미만",
        ),
        (
            "작업 폴더",
            "통과" if folder_ok else "확인 필요",
            "파일 위치와 같음" if folder_ok else "파일 위치와 다름",
        ),
        (
            "파일 쓰기",
            "통과" if write_ok else "확인 필요",
            "임시 파일 확인" if write_ok else "쓰기 점검 실패",
        ),
    ]

    print("준비 상태")
    print("항목 | 결과 | 설명")
    for name, result, detail in rows:
        print(f"{name} | {result} | {detail}")

    if version_ok and folder_ok and write_ok:
        print("판정: 실행 준비 완료")
    else:
        print("판정: 확인 필요 항목을 살펴보자.")


if __name__ == "__main__":
    main()

줄별 해설

줄 번호는 위 코드의 빈 줄까지 포함해 센다. 줄 번호 자체는 파일에 입력하지 않는다. 지금은 모든 문법을 외우기보다 어떤 정보를 읽고 어떤 조건으로 결과를 출력하는지 따라간다.

완성 코드의 각 줄이 맡는 역할
줄역할읽을 때 확인할 점
1~3sys, tempfile, Path를 가져온다.각각 실행 환경, 임시 폴더, 파일 경로를 다룬다.
4~5코드 덩어리 사이를 비운다.빈 줄은 화면 출력에 영향을 주지 않는다.
6check_write라는 함수를 정의한다.함수는 이름을 붙여 다시 사용할 작업 묶음이며 folder를 전달받는다.
7실패할 수 있는 파일 작업을 시작한다.try 아래에서 운영체제 관련 오류가 나면 18줄로 이동한다.
8~10전달받은 폴더 안에 임시 폴더를 만든다.with 구간을 벗어나면 임시 폴더와 그 안의 파일을 정리한다.
11임시 폴더 안의 probe.txt 위치를 만든다.Path 사이의 /는 경로를 이어 붙이는 표기다.
12기록할 글자를 message에 담는다.이름에 값을 담는 것을 변수에 저장한다고 한다.
13~14UTF-8로 글자를 쓰고 다시 읽는다.기존 사용자 파일 대신 새 임시 파일을 사용한다.
15~16읽은 글자가 다르면 실패를 돌려준다.!=는 서로 다르다는 비교이며 False는 거짓을 나타낸다.
17기록, 읽기, 정리가 끝나면 성공을 돌려준다.True는 참을 나타내며 return은 함수의 결과를 전달한다.
18~19파일 작업의 오류를 실패로 바꾼다.쓰기 권한 부족이나 저장 공간 부족 등이 포함될 수 있다.
20~21다음 함수 앞을 비운다.작업 묶음의 경계를 읽기 쉽게 한다.
22프로그램의 주된 작업을 main으로 묶는다.이 줄은 정의이며 실제 호출은 마지막 줄에서 한다.
23실행 중인 Python을 3.12와 비교한다.>=는 크거나 같다는 뜻이고 (3, 12)는 비교할 숫자 묶음이다.
24현재 작업 폴더의 경로를 구한다.cwd는 현재 위치를 뜻하며 resolve는 경로를 실제 위치로 정리한다.
25실행 중인 파일이 들어 있는 폴더를 구한다.__file__은 이 코드 파일의 위치이며 parent는 바로 위 폴더다.
26두 폴더가 같은지 비교한다.==는 같음을 비교한다. 값을 담는 =와 구별한다.
27현재 폴더에서 쓰기 점검을 실행한다.함수가 돌려준 참 또는 거짓을 write_ok에 담는다.
28점검과 출력 자료 사이를 비운다.정보를 얻는 부분과 보여 줄 자료를 만드는 부분이 나뉜다.
29~34표의 첫 행에 버전 판정을 담는다.대괄호는 여러 항목의 목록이며 조건에 따라 출력 문구를 고른다.
35~39표의 두 번째 행에 폴더 판정을 담는다.같은 폴더에서 실행했는지를 보여 준다.
40~45쓰기 판정을 담고 목록을 닫는다.목록에는 이름, 결과, 설명으로 구성된 행 세 개가 들어간다.
46출력 부분 앞을 비운다.이후부터 화면에 결과를 표시한다.
47~48표의 제목과 열 이름을 출력한다.| 문자는 열 사이의 경계를 보여 준다.
49~50세 행을 차례로 꺼내 출력한다.for는 반복이며 f가 붙은 문자열의 중괄호 자리에 값을 넣는다.
51최종 판정 앞을 비운다.출력되는 빈 줄이 아니라 코드 속 빈 줄이다.
52~55세 조건이 모두 참인지 검사해 판정한다.and는 모두 충족하는 조건이며 else는 그렇지 않은 경우다.
56~57마지막 실행 구간 앞을 비운다.함수 정의가 끝났음을 구분하기 쉽다.
58~59파일을 직접 실행했을 때 main을 호출한다.__name__을 확인하는 관용적인 시작 형태다.

들여쓰기도 코드의 일부다. 함수 안에 들어 있는 줄, 조건이 맞을 때 실행할 줄은 앞에 공백을 넣어 구분한다. 복사한 뒤 들여쓰기가 흐트러지지 않았는지 확인한다. 특히 return True가 with 바깥에 있으므로 임시 폴더 정리까지 끝난 뒤 성공으로 판정한다.

쓰기 점검의 범위에도 한계가 있다. 지금 이 순간 현재 폴더에 작은 임시 파일을 만들고 읽고 지울 수 있는지를 검사한다. 이후 모든 파일 저장이 성공한다는 보장은 아니다. 결과가 확인 필요라면 권한뿐 아니라 저장 공간과 폴더 상태도 살핀다.

실행 결과

먼저 저장한 main.py가 있는 폴더로 이동한다. pwd와 ls로 위치와 파일 이름을 확인한 뒤 다음 명령을 실행한다. 명령은 터미널에 입력할 내용이므로 인용문으로 구분한다.

python3 main.py

Python 3.12 이상을 사용하고, main.py가 있는 폴더에서 실행하며, 그 폴더에 파일을 쓸 수 있다면 다음과 같이 출력한 뒤 끝난다. 별도의 입력을 기다리지 않는다.

준비 상태
항목 | 결과 | 설명
Python 버전 | 통과 | 3.12 이상
작업 폴더 | 통과 | 파일 위치와 같음
파일 쓰기 | 통과 | 임시 파일 확인
판정: 실행 준비 완료

다른 위치에서 실행하면 어떻게 되는지도 확인한다. vibe-start 폴더에 있는 상태에서 다음 두 명령을 차례로 입력한다. 첫 줄은 홈 폴더로 이동하고, 두 번째 줄은 하위 폴더의 파일을 실행한다.

cd ..

python3 vibe-start/main.py

홈 폴더에도 파일을 쓸 수 있고 Python 버전 조건이 맞는다면 결과는 다음과 같다. 파일을 실행할 수 있다는 사실과 현재 위치가 파일의 폴더와 같다는 사실은 별개임을 보여 준다.

준비 상태
항목 | 결과 | 설명
Python 버전 | 통과 | 3.12 이상
작업 폴더 | 확인 필요 | 파일 위치와 다름
파일 쓰기 | 통과 | 임시 파일 확인
판정: 확인 필요 항목을 살펴보자.

연습을 마쳤으면 cd vibe-start로 돌아온다. 이 점검기는 폴더가 다르다고 자동으로 이동하지 않는다. 결과를 보고 사람이 위치를 바꾸도록 한다. 버전이나 쓰기 상태가 다른 경우에는 해당 행의 문구도 코드에 적힌 다른 문구로 바뀐다.

점검 뒤 ls로 목록을 다시 본다. 정상 종료했다면 임시 폴더가 남지 않는다. 임시 폴더의 이름에는 자동으로 정해지는 부분이 있지만 그 이름을 출력하지 않으므로 예상 출력에는 영향을 주지 않는다. 실행 중 강제로 종료하면 정리가 끝나지 않을 수 있다.

실무에서 자주 틀리는 것

현재 위치를 파일 위치라고 생각한다

다음 코드는 실행 가능하지만, 실행한 파일이 있는 폴더를 구하려는 목적에는 맞지 않는다.

from pathlib import Path

script_folder = Path.cwd()
print(script_folder.name)

cwd는 터미널의 현재 위치다. 코드 파일의 위치를 구하려면 다음처럼 고친다. 두 코드는 각각 main.py에 저장해서 실행할 수 있다. 결과는 파일을 둔 위치와 실행 위치에 따라 달라진다.

from pathlib import Path

script_folder = Path(__file__).resolve().parent
print(script_folder.name)

완성 점검기는 두 경로를 모두 구해서 비교한다. AI에게 고쳐 달라고 할 때도 “폴더가 이상하다”보다 “현재 위치와 코드 파일의 폴더를 구별해 달라”라고 말하면 확인할 대상을 분명히 할 수 있다.

Python 코드에 터미널 명령을 적는다

python3 main.py는 터미널에 입력하는 명령이다. Python 파일 안에 넣을 코드가 아니다. 반대로 print는 Python 코드다. 다음은 명령을 글자로 출력하기만 하므로 main.py를 실행하려는 목적에는 맞지 않는다.

print("python3 main.py")

main.py에는 실제로 수행할 Python 작업을 저장한다.

print("준비를 확인한다.")

저장한 파일을 실행하는 명령은 터미널에 따로 입력한다.

python3 main.py

어디에 입력할 내용인지 먼저 구분한다. AI에게 코드를 받을 때도 “파일에 저장할 Python 코드와 터미널에서 실행할 명령을 나누어 달라”라고 요청할 수 있다.

쓰기 가능 여부를 위험한 위치에서 시험한다

다음 코드는 현재 폴더에 있는 main.py를 덮어쓴다. 문법상 실행할 수 있어도 쓰기 점검으로 사용하면 연습 파일을 잃을 수 있다. 이 코드는 실행하지 않는다.

from pathlib import Path

Path("main.py").write_text("쓰기 확인", encoding="utf-8")

점검은 별도의 임시 폴더 안에서 한다. 다음 코드는 새 임시 폴더에만 파일을 쓰고 구간이 끝나면 정리한다. 완성 코드에서는 여기에 읽기 확인과 실패 처리를 더했다.

import tempfile
from pathlib import Path

with tempfile.TemporaryDirectory(dir=Path.cwd()) as folder:
    test_file = Path(folder) / "probe.txt"
    test_file.write_text("쓰기 확인", encoding="utf-8")

AI가 만든 코드에서도 파일에 쓰는 줄은 따로 살핀다. 무엇을 확인하려는 코드인지뿐 아니라 어느 파일을 바꾸는지 확인해야 한다. 실행 후에는 기존 main.py가 그대로 있고 임시 파일이 정리되었는지 본다.

한눈에 보기

작업 환경을 확인하는 순서와 판단 기준
확인 대상확인 방법준비된 상태다를 때 할 일
Pythonpython3 --version3.12 이상이 표시된다.설치 안내와 터미널 상태를 확인한다.
현재 위치pwd정한 작업 폴더를 가리킨다.cd로 이동한다.
저장된 파일ls와 에디터 확인main.py가 있고 최신 내용이 저장되어 있다.저장 위치와 확장자를 확인한다.
도구 사이의 위치전체 경로 대조에디터와 접근 가능한 AI 도구가 같은 폴더를 본다.열린 폴더를 다시 지정한다.
쓰기 가능 여부점검기 실행임시 파일을 쓰고 읽고 정리한다.폴더 권한과 저장 공간을 확인한다.
AI의 변경 내용차이 표시와 실행 결과 확인요청한 변경과 예상 결과가 일치한다.달라진 줄과 실행한 파일을 다시 살핀다.

환경 준비의 기준은 도구가 많이 설치되어 있다는 것이 아니다. 내가 저장한 파일을 내가 정한 위치에서 실행하고, 나온 결과가 예상과 같은지 설명할 수 있으면 된다. 이 연결이 확인되면 다음 장에서 프로그램의 목적과 입력, 출력을 말로 정하는 데 집중할 수 있다.

연습 문제

  1. 점검기의 작업 폴더 항목이 통과한 상태에서 바로 위 폴더로 이동해 실행한다. 다시 원래 폴더로 돌아와 실행하고, 어느 행이 달라지는지 적는다. 두 위치 모두 파일 쓰기가 가능한 상황을 가정한다.
  2. 에디터에서는 main.py가 보이는데 터미널의 ls에는 main.py.txt만 나온다. Python 코드를 고치기 전에 무엇을 확인하고 어떻게 바로잡을지 설명한다.
  3. 완성 코드에서 제목을 출력하는 문장만 “작업 환경 점검”으로 바꾸도록 AI에게 요청했다고 가정한다. 수정 전후의 차이 표시와 실행 결과에서 각각 무엇을 확인할지 적는다.
  4. AI가 “쓰기 확인을 위해 현재 폴더의 main.py에 짧은 문장을 저장하겠다”라고 답했다. 이 방법의 문제를 설명하고, 임시 폴더를 사용하도록 요청문을 다시 쓴다.

정답과 해설

  1. 위 폴더에서는 python3 vibe-start/main.py로 실행하고, 원래 폴더에서는 python3 main.py로 실행한다. 작업 폴더 행이 “확인 필요 | 파일 위치와 다름”에서 “통과 | 파일 위치와 같음”으로 바뀐다. 두 위치에서 버전과 쓰기 조건이 맞으면 최종 판정도 실행 준비 완료로 바뀐다. 실행 파일은 같아도 현재 위치는 다를 수 있다.
  2. 에디터에서 파일의 전체 이름과 저장 위치를 확인한다. main.py.txt를 main.py로 이름 변경하고 실제 이름이 바뀌었는지 ls로 확인한다. main.py가 이미 있다면 먼저 두 파일의 내용을 비교해 어느 파일을 사용할지 정한다. 이후 저장하고 실행한다. 확장자 문제를 코드 내용 수정으로 해결하려 하지 않는다.
  3. 차이 표시에서는 제목을 출력하는 줄만 바뀌었는지 확인한다. 실행 결과에서는 첫 줄만 “작업 환경 점검”으로 바뀌고 나머지 준비 상태가 같은지 확인한다. 출력이 그대로라면 저장 여부와 실행한 파일의 위치를 먼저 확인한다. 요청대로 수정되었다는 AI의 설명만으로 끝내지 않는다.
  4. 기존 main.py를 쓰기 시험에 사용하면 프로그램 내용이 덮어써진다. 요청문은 다음처럼 쓸 수 있다. “현재 작업 폴더에 파일을 쓸 수 있는지 확인하라. 기존 파일은 수정하지 말고 tempfile로 새 임시 폴더를 만든 뒤 그 안에서만 글자를 쓰고 읽어 비교하라. 점검 후 임시 파일과 폴더를 정리하라.” 받은 코드에서는 실제 쓰기 대상이 임시 폴더 안인지 확인한 뒤 실행한다.
오탈자·오류 제보 비공개로 접수되어 원고 수정에 반영됩니다

이메일 등 개인정보는 받지 않습니다. 답변이 필요한 질문은 아래 댓글을 이용해 주세요.

READER FEEDBACK

질문·의견

내용에 관한 질문이나 더 나은 설명을 위한 의견을 남겨 주세요. 오탈자는 위의 제보 양식이 더 빨리 반영됩니다. 이 댓글은 원래 게시글과 같은 자리에 쌓입니다.

댓글 0

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

댓글을 남기려면 로그인이 필요합니다.