P2-7.3 Python 인터프리터(interpreter)와 스크립트(script)¶
Section ID:
P2-7.3Version:v2026.07.20
P2-7.2에서는 터미널(terminal), 셸(shell), 작업 폴더(working directory)를 봤습니다. 이제 그 터미널에서 Python 코드를 어떻게 실행하는지 봅니다.
가장 헷갈리기 쉬운 지점은 다음과 같습니다.
이 세 줄은 모두 Python과 관련이 있지만 같은 종류의 문장이 아닙니다. 어떤 것은 터미널 명령이고, 어떤 것은 Python 코드입니다. 여기서는 그 경계를 분명히 잡습니다.
여기서는 Python 인터프리터(interpreter), 스크립트(script), 대화형 모드(interactive mode)의 구분을 설명합니다. 뒤 절에서 python -m pip ... 같은 명령이나 노트북 실행을 다시 만나더라도, Python이 코드를 어떤 자리에서 어떻게 읽는지는 여기 설명을 기준으로 다시 연결합니다.
여기서는 Python 문법 자체를 배우기보다, Python 코드를 어떤 자리에서 어떻게 실행하는지 구분하는 데 집중합니다. 여기서 인터프리터, 대화형 실행, 스크립트 실행의 차이를 잡아 두면, 뒤에서 가상환경, 패키지 설치, 데이터 파일 실행을 볼 때 명령을 잘못 쓴 것인지, 실행 자리를 잘못 잡은 것인지를 먼저 나눌 수 있습니다.
| 지금 이 절에서 잡을 것 | 바로 다음에 이어질 질문 | 이후 다시 쓰이는 위치 |
|---|---|---|
| 대화형 실행과 스크립트 실행의 차이 | P2-7.4에서 가상환경과 패키지 설치 명령으로 이어집니다. | 이후 모든 Python 실습에서 실행 방식과 파일 구조를 구분할 때 다시 씁니다. |
| 터미널 명령과 Python 코드를 섞지 않는 기준 | P2-7.5 이후 데이터 파일과 라이브러리 사용으로 넘어갑니다. | Colab과 로컬 환경 차이를 해석할 때 바탕이 됩니다. |
python, python file.py, python -m ...의 자리 구분 | P2-7.6과 P2-7.7에서 운영체제별 설치·실행 절차를 보강합니다. | 패키지 설치, 모듈 실행, 프로젝트 스크립트 실행에서 반복됩니다. |
| 용어 | 이 절에서 먼저 잡을 뜻 |
|---|---|
| Python 인터프리터(interpreter) | Python 코드를 읽고 실행하는 프로그램입니다. |
| 대화형 모드(interactive mode) | 한 줄씩 입력하고 바로 결과를 확인하는 실행 방식입니다. |
| 스크립트(script) | 여러 줄 코드를 파일로 저장해 한 번에 실행하는 방식입니다. |
| 프롬프트(prompt) | 지금 입력할 자리를 보여 주는 표시입니다. |
python -m ... | Python에게 특정 모듈을 실행하라고 요청하는 방식입니다. |
핵심 기준: Python 인터프리터(interpreter)와 스크립트(script)¶
- Python 인터프리터(Python interpreter)를 Python 코드를 읽고 실행하는 프로그램으로 설명할 수 있습니다.
- 대화형 모드(interactive mode)와 스크립트(script) 실행의 차이를 설명할 수 있습니다.
- 터미널 명령과 Python 코드를 구분할 수 있습니다.
- Colab/Jupyter 코드 셀 실행이 터미널 실행과 어떻게 다른지 입문 수준에서 설명할 수 있습니다.
- 같은 코드라도 실행 방식이 다르면 저장, 재실행, 공유 방식이 달라진다는 점을 설명할 수 있습니다.
세 가지 기준¶
| 기준 | 왜 중요한가 | 이 절에서 필요한 이해 수준 |
|---|---|---|
| 인터프리터는 Python 코드를 읽고 실행하는 프로그램이다 | 코드와 실행 프로그램을 구분해야 실행 방식의 차이가 보인다 | 인터프리터의 역할을 한 문장으로 설명할 수 있으면 충분하다 |
| 스크립트 실행과 대화형 실행은 실행 단위가 다르다 | 저장, 재실행, 공유 방식이 달라지기 때문이다 | 파일 단위 실행과 한 줄 실행을 구분할 수 있다 |
| 터미널 명령과 Python 코드는 입력하는 자리가 다르다 | 같은 Python 관련 문장처럼 보여도 해석 주체가 다르다 | 셸 프롬프트와 Python 프롬프트를 구분하는 감각을 잡는다 |
왜 인터프리터와 스크립트가 함께 등장했을까¶
Python은 처음부터 “파일로 저장한 프로그램만 실행하는 언어”로만 이해하기 어렵습니다. Python 공식 FAQ는 Python을 해석형(interpreted), 대화형(interactive), 객체 지향(object-oriented) 프로그래밍 언어로 설명합니다. 또 Guido van Rossum이 ABC 언어 구현 경험과 Amoeba 분산 운영체제 작업 경험을 바탕으로 Python을 만들기 시작했고, C 프로그램이나 Bourne shell script만으로 시스템 관리 작업을 처리하기 어려웠던 상황에서 더 확장 가능한 스크립팅 언어가 필요했다고 설명합니다.
이 배경을 입문자 관점으로 줄이면 다음과 같습니다.
- 셸 스크립트: 운영체제 명령을 이어 붙여 자동화하기 좋습니다.
- C 같은 컴파일 언어: 빠르고 강력하지만 작은 자동화와 실험에는 무거울 수 있습니다.
- Python: 읽기 쉬운 고수준 문법과 대화형 실행, 스크립트 실행을 함께 제공합니다.
그래서 Python에서는 두 사용 방식이 자연스럽게 함께 보입니다.
- 대화형 실행: 작은 표현을 바로 시험합니다.
- 스크립트 실행: 여러 줄의 작업을 파일로 저장해 반복 실행합니다.
AI 학습에서 Python을 자주 만나는 이유도 이 지점과 연결됩니다. 수식을 작은 코드로 바로 확인하고, 조금 길어진 실험은 파일이나 노트북으로 남기기 쉽기 때문입니다. 다만 여기서는 Python 언어사를 깊게 다루지 않고, 인터프리터와 스크립트라는 실행 방식이 왜 함께 쓰이는지의 감각을 남깁니다.
인터프리터는 코드를 읽고 실행하는 프로그램이다¶
Python 인터프리터(Python interpreter)는 Python 코드를 읽고 실행하는 프로그램입니다. Python 공식 문서는 인터프리터를 명령줄(command line)에서 호출할 수 있고, 파일 이름이나 표준 입력 없이 실행하면 대화형 모드(interactive mode)에 들어간다고 설명합니다.
여기서는 다음처럼 이해합니다.
- Python 코드: 사람이 작성한 명령입니다.
- Python 인터프리터: Python 코드를 읽고 실행하는 프로그램입니다.
다음은 Python 코드입니다.
문제 상황: Python 인터프리터가 읽는 가장 단순한 코드가 어떤 모습인지 확인합니다. 입력(input): 문자열을 출력하는 Python 코드 한 줄입니다. 기대 출력(output): 실행하면 hello가 출력됩니다. 확인할 개념: 인터프리터는 이런 Python 문장을 읽고 실행하는 프로그램이라는 점을 봅니다.
이 코드는 글자만으로 동작하지 않습니다. Python 인터프리터가 읽어야 실행됩니다.
대화형 모드는 한 줄씩 확인하는 방식이다¶
터미널에서 Python을 실행하면 대화형 모드(interactive mode)를 사용할 수 있습니다.
환경에 따라 명령 이름이 python3일 수도 있습니다.
대화형 모드에 들어가면 보통 >>> 프롬프트가 보입니다. Python 공식 문서도 대화형 모드에서 기본 프롬프트가 >>>라고 설명합니다.
문제 상황: 대화형 모드에서는 한 줄 계산과 출력이 어떻게 즉시 확인되는지 봅니다. 입력(input): 1 + 2 계산과 print("hello") 호출입니다. 기대 출력(output): 3과 hello가 즉시 출력됩니다. 확인할 개념: 대화형 모드는 계산을 한 줄씩 시험해 보는 실행 방식이라는 점을 봅니다.
대화형 모드는 계산을 바로 확인하기 좋습니다.
대화형 모드는 다음 상황에 특히 잘 맞습니다.
- 짧은 계산을 확인합니다.
- 문법을 시험해 봅니다.
- 작은 값을 바로 출력해 봅니다.
하지만 대화형 모드에 입력한 내용은 보통 파일로 남지 않습니다. 다시 실행하려면 다시 입력해야 합니다. 그래서 여러 줄의 코드를 반복해서 실행해야 할 때는 스크립트(script) 파일을 사용합니다.
스크립트는 파일에 저장한 실행 단위다¶
스크립트(script)는 실행할 코드를 파일에 저장해 둔 것입니다. Python 파일은 보통 .py 확장자를 사용합니다.
예를 들어 hello.py라는 파일에 다음 내용을 저장했다고 생각해 봅니다.
문제 상황: 여러 줄 Python 코드를 파일에 저장해 스크립트로 실행하는 형태를 봅니다. 입력(input): hello.py 안의 두 줄 Python 코드입니다. 기대 출력(output): 실행하면 hello와 1 + 2의 결과가 순서대로 출력됩니다. 확인할 개념: 스크립트는 Python 코드를 파일 단위로 저장해 반복 실행하는 방식이라는 점을 봅니다.
터미널에서 같은 폴더에 있다면 다음처럼 실행할 수 있습니다.
환경에 따라 다음 명령을 쓸 수도 있습니다.
스크립트 실행은 대화형 실행과 다릅니다.
| 실행 방식 | 입력 위치 | 장점 | 주의할 점 |
|---|---|---|---|
| 대화형 실행 | >>> 프롬프트 | 한 줄씩 바로 확인하기 좋다 | 입력 기록이 파일로 남지 않을 수 있다 |
| 스크립트 실행 | .py 파일 | 저장, 수정, 재실행, 공유가 쉽다 | 현재 작업 폴더와 파일 경로를 확인해야 한다 |
AI 학습에서는 작은 계산을 바로 확인할 때도 있고, 같은 코드를 여러 번 고쳐 실행할 때도 있습니다. 그래서 두 방식을 모두 만납니다.
터미널 명령과 Python 코드를 섞지 않는다¶
가장 자주 헷갈리는 구분은 이것입니다.
이것은 터미널 명령입니다. Python 코드 파일 안에 쓰는 문장이 아닙니다.
반대로 다음은 Python 코드입니다.
문제 상황: 같은 print("hello")라도 셸 프롬프트가 아니라 Python 실행 자리에서만 동작한다는 점을 다시 확인합니다. 입력(input): 문자열을 출력하는 Python 코드입니다. 기대 출력(output): Python 코드로 실행하면 hello가 출력됩니다. 확인할 개념: 터미널 명령과 Python 코드는 문장 모양이 아니라 입력 위치로 구분해야 한다는 점을 봅니다.
이 문장은 터미널에 그대로 입력하는 명령이 아닙니다. 물론 Python 대화형 모드의 >>> 프롬프트 안에서는 입력할 수 있습니다. 그러나 일반 셸 프롬프트에서는 Python 코드가 아니라 셸 명령으로 해석됩니다.
여기서는 프롬프트를 구분하는 습관이 중요합니다.
$또는%처럼 보이는 셸 프롬프트: 터미널 명령을 입력합니다.>>>Python 프롬프트: Python 코드를 입력합니다.- Colab/Jupyter 코드 셀: 기본적으로 Python 코드를 입력합니다.
코드 셀은 스크립트와 대화형 실행 사이에 있다¶
Colab이나 Jupyter의 코드 셀(code cell)은 Python 코드를 셀 단위로 실행합니다.
문제 상황: 노트북 코드 셀에서 가장 작은 Python 코드를 실행하는 모습을 다시 확인합니다. 입력(input): 문자열을 출력하는 Python 코드 한 줄입니다. 기대 출력(output): 셀 실행 결과로 hello가 출력됩니다. 확인할 개념: 코드 셀은 대화형 실행처럼 즉시 결과를 보여 주면서도 노트북에 기록을 남긴다는 점을 봅니다.
코드 셀은 대화형 실행처럼 즉시 결과를 확인하기 좋습니다. 동시에 노트북 파일에 코드와 결과, 설명을 함께 남길 수 있습니다. 그래서 학습용으로 편합니다.
하지만 코드 셀은 스크립트 파일과도 다릅니다. 셀 실행 순서가 바뀌면 결과가 달라질 수 있고, 앞 셀에서 만든 변수를 뒤 셀이 사용하기도 합니다.
세 실행 자리를 다시 나누면 다음과 같습니다.
- 대화형 모드: 한 줄씩 빠르게 확인합니다.
- 스크립트 파일: 파일 전체를 저장하고 반복 실행합니다.
- 노트북 코드 셀: 설명과 결과를 함께 남기며 셀 단위로 실행합니다.
나중에 실습이 길어지면 “노트북에서는 됐는데 스크립트로 옮기면 안 된다”는 상황이 생길 수 있습니다. 그때는 셀 실행 순서, 파일 경로, 필요한 import, 패키지 설치 상태를 나누어 확인해야 합니다.
python -m은 모듈을 실행하는 방식이다¶
터미널에서 다음 명령을 자주 보게 됩니다.
여기서 -m은 Python에게 특정 모듈(module)을 스크립트처럼 실행하라고 요청하는 방식입니다. Python 공식 문서는 python -m module 형식이 라이브러리 모듈을 스크립트로 실행한다고 설명합니다.
여기서는 이렇게 이해합니다.
python hello.py: 파일을 실행합니다.python -m pip ...:pip라는 모듈을 Python을 통해 실행합니다.
pip와 패키지 설치는 P2-7.4에서 다시 다룹니다. 여기서는 -m이 Python 코드 문법이 아니라 터미널에서 Python 인터프리터에게 주는 실행 옵션이라는 점만 기억합니다.
실행 방식이 달라지면 확인할 것도 달라진다¶
같은 Python 코드라도 실행 방식에 따라 확인할 지점이 달라집니다.
| 상황 | 먼저 확인할 것 |
|---|---|
| 대화형 모드에서 안 된다 | 지금 >>> 프롬프트 안에 있는가 |
| 스크립트 파일이 안 열린다 | 현재 작업 폴더에 파일이 있는가 |
python 명령을 찾을 수 없다 | Python이 설치되어 있고 명령 이름이 맞는가 |
| Colab에서는 되는데 로컬에서 안 된다 | 로컬에 같은 파일과 패키지가 있는가 |
| 스크립트로 옮기니 안 된다 | 노트북 셀 실행 순서에 의존하던 값이 있는가 |
여기서는 오류 해결법을 모두 다루지 않습니다. 중요한 것은 “실행 방식이 다르면 오류의 원인도 다르게 좁혀야 한다”는 관점입니다.
사례 및 예시¶
사례 1. print("hello")를 어디에 입력해야 하는가¶
처음 Python을 배우는 사람이 튜토리얼을 따라 하다가 print("hello")를 터미널에 그대로 입력했다고 하겠습니다. 어떤 환경에서는 잘 되는 것처럼 보이고, 어떤 환경에서는 명령을 찾을 수 없다는 메시지가 나와 당황할 수 있습니다.
사람이 쓰던 기준은 대개 Python과 관련된 문장이니 아무 데나 넣어도 되겠지에 가깝습니다. 하지만 실제로는 셸 프롬프트, Python 대화형 프롬프트, Colab 코드 셀은 각각 입력하는 언어가 다릅니다.
이 절이 인터프리터, 대화형 모드, 스크립트, 코드 셀을 나누는 이유가 여기에 있습니다. 같은 내용처럼 보여도 python hello.py는 터미널 명령이고, print("hello")는 Python 코드이며, 오류 원인도 어느 자리에 입력했는가에 따라 달라집니다.
확인 가능한 결과는 프롬프트를 보면 드러납니다. >>> 안에서는 print("hello")가 동작하지만 일반 셸 프롬프트에서는 그렇지 않다면, 문제는 Python 문법이 아니라 실행 자리를 잘못 선택한 것입니다.
체크리스트¶
- Python 인터프리터(Python interpreter)를 Python 코드를 읽고 실행하는 프로그램으로 설명할 수 있다.
- 대화형 모드(interactive mode)에서
>>>프롬프트에 Python 코드를 입력한다는 점을 설명할 수 있다. - 스크립트(script)가
.py파일에 저장한 실행 단위라는 점을 설명할 수 있다. python hello.py는 터미널 명령이고,print(\"hello\")는 Python 코드라는 점을 구분할 수 있다.- Colab/Jupyter 코드 셀은 Python 코드를 셀 단위로 실행한다는 점을 설명할 수 있다.
python -m pip ...에서-m이 터미널에서 Python 인터프리터에게 주는 실행 옵션이라는 점을 설명할 수 있다.- 지금 입력하는 곳이 셸인지, Python 프롬프트인지, 코드 셀인지 구분할 수 있다.
출처와 참고 자료¶
- Python Software Foundation, General Python FAQ, Python 3.14.6 documentation, 확인 날짜: 2026-07-20. Python을 해석형·대화형 프로그래밍 언어로 설명하고, Guido van Rossum의 초기 개발 배경을 확인하는 근거로 사용했다.
- Python Software Foundation, Using the Python Interpreter, Python 3.14.6 documentation, 확인 날짜: 2026-07-20. Python 인터프리터 호출, 대화형 모드, 스크립트 파일 실행의 차이를 확인하는 근거로 사용했다.
- Python Software Foundation, Command line and environment, Python 3.14.6 documentation, 확인 날짜: 2026-07-20.
python script.py,python -c,python -m module-name같은 명령줄 실행 방식 확인에 사용했다.