Загружаем каталог…
Загружаем каталог…
Jupyter, Kernel, ipykernel, 가상환경과 Python Interpreter 이해하기 Python으로 데이터 분석이나 AI를 시작하면 생각보다 자주 마주치는 단어들이 존재함. .py .ipynb Jupyter Kernel ipykernel Python Interpreter 가상환경 라이브러리 Interactive Window 처음에는 전부 비슷해 보이지만 실제로는 각각 담당하는 역할이 다름 . 이번 글에서는 단순히 사용 방법만 외우는 것이 아니라 다음 질문을 하나씩 해결하면서 전체 구조를 이해하는 것이 목적임. "내가 VS Code에서 작성한 Python 코드는 도대체 누가 실행하는 것일까?" 1. Jupyter란 무엇일까? ❓ 질문 Jupyter Notebook에서 말하는 Jupyter 는 무슨 뜻일까? Jupyter의 의미 Jupyter는 대화형 컴퓨팅 환경을 제공하는 프로젝트임. 이름은 전통적으로 다음 세 언어에서 유래한 것으로 설명됨. Ju → Julia Py → Python R → R 즉, Jupyter가 처음부터 Python만을 위한 프로그램은 아니라는 의미 . Python뿐만 아니라 해당 언어를 실행할 수 있는 Kernel만 존재한다면 다양한 언어를 Notebook 환경에서 실행 가능 . 대표적인 예시는 다음과 같음. 언어 사용할 수 있는 Kernel 예시 Python ipykernel R IRkernel C++ xeus-cling JavaScript ijavascript Java IJava 왜 이 개념이 필요할까? .ipynb = Python 파일 이라고 생각하면 Kernel의 역할을 이해하기 어려워지기 때문임. 정확하게는 다음 구조에 가까움. .ipynb ↓ 선택한 Kernel ↓ 해당 언어 실행 따라서 .ipynb 는 특정 언어 그 자체가 아니라 코드와 실행 결과 등을 담을 수 있는 Notebook 문서 형식 으로 이해하는 것이 중요함. 2. 그렇다면 Kernel은 무엇일까? ❓ 질문 Notebook 화면이 있는데 왜 Kernel이라는 것이 또 필요할까? VS Code나 Jupyter Notebook은 우리가 코드를 작성하고 결과를 확인하는 화면 을 제공함. 하지만 화면 자체가 Python 코드를 실행하는 것은 아님. 실제 코드를 실행해 주는 별도의 실행 엔진이 필요함. 이것이 Kernel 임. Kernel 코드를 전달받아 실제로 실행하고 결과를 다시 Notebook에 전달하는 실행 프로세스 쉽게 구조화하면 다음과 같음. 사용자 ↓ VS Code / Jupyter Notebook ↓ Kernel ↓ Python 실행 ↓ 실행 결과 ↓ VS Code / Jupyter Notebook 🍳 주방으로 비유하기 전체 구조를 식당으로 생각하면 이해하기 쉬움. 개념 비유 사용자 손님 VS Code / Jupyter 주문을 전달하는 공간 .ipynb 메뉴와 주문 내용이 적힌 종이 Kernel 실제 요리를 수행하는 주방장 가상환경 주방장이 사용하는 전용 주방 라이브러리 주방 안에 준비된 식재료와 조리도구 손님이 메뉴판에 주문을 적었다고 해서 음식이 자동으로 만들어지는 것은 아님. 실제로 요리하는 주방장 , 즉 Kernel이 필요한 구조임. 3. ipykernel은 무엇일까? ❓ 질문 그러면 ipykernel 은 그냥 Python을 실행하는 Kernel인 걸까? 핵심적으로 맞는 이해임. ipykernel 이라는 이름을 나누어 보면 역할을 이해하기 쉬움. i + py + kernel i → Interactive, 대화형 py → Python kernel → 코드를 실행하는 Kernel 즉, Python 코드를 대화형으로 실행할 수 있도록 Jupyter 환경과 연결해 주는 Python Kernel 이라고 이해 가능함. ipykernel은 IPython 기반의 Jupyter용 Python Kernel임. 4. 그런데 왜 '대화형(Interactive)'이라고 부를까? ❓ 질문 Python을 실행하는 건 알겠는데 왜 굳이 '대화형'이라는 이름을 사용할까? 핵심은 코드를 한 번에 전부 실행하는 것이 아니라 조금씩 실행하고 바로 결과를 확인할 수 있기 때문 임. 예를 들어 다음 코드를 실행한다고 가정함. a = 10 Kernel이 살아 있는 상태에서 다음 셀을 실행함. b = 20 그리고 다시 다음 코드를 실행함. a + b 결과: 30 첫 번째 셀에서 만든 a 와 두 번째 셀에서 만든 b 가 Kernel의 메모리에 남아 있기 때문에 세 번째 셀에서 다시 사용 가능함. 카카오톡으로 비유하기 사람과 다음과 같은 대화를 했다고 가정함. 나: 어제 치킨 먹었어. 상대방: 오. 나: 그거 맛있더라. 상대방은 앞의 대화를 기억하기 때문에 그거 = 치킨 이라는 사실을 이해함. 대화형 실행도 비슷한 구조임. a = 10 라고 먼저 실행하면 Kernel이 a 를 기억함. 이후 print(a) 만 실행해도 이전 실행 상태를 기억하고 있기 때문에 다음 결과 출력이 가능함. 10 대화형이라는 이름이 필요한 이유 데이터 분석과 AI 실험에서는 다음과 같은 확인 작업의 반복이 많기 때문임. 데이터 불러오기 ↓ 잘 불러왔는지 확인 ↓ 전처리 ↓ 결과 확인 ↓ 그래프 생성 ↓ 결과 확인 ↓ 모델 학습 ↓ 성능 확인 즉, 코드 작성 → 실행 → 결과 확인 → 수정 → 다시 실행 이라는 반복적인 작업 구조에 적합한 방식임. 5. Python Interpreter는 무엇일까? ❓ 질문 그런데 Kernel 말고 Python Interpreter라는 것도 나오는데 이건 무엇일까? Python Interpreter는 Python 코드를 읽고 실행하는 Python 실행기 임. 컴퓨터에 Python을 설치하면 사용할 수 있게 되는 python 실행 프로그램이 대표적인 Python Interpreter임. 예를 들어 터미널에서 다음 명령을 실행하는 상황임. python main.py 이때 main.py 를 읽고 실행하는 주체가 Python Interpreter임. Interpreter가 하는 일 Python 코드를 위에서부터 실행하면서 필요한 연산을 수행하고 오류가 발생하면 해당 위치에서 오류를 알려주는 역할 수행. 예를 들어 다음 코드가 있다고 가정함. a = 10 b = 20 print(a + b) Python Interpreter가 이 코드를 읽고 실행하여 다음 결과 생성. 30 6. Python Interpreter와 ipykernel은 무엇이 다를까? ❓ 질문 둘 다 Python 코드를 실행한다면 Python Interpreter와 ipykernel은 같은 것 아닐까? 완전히 같은 개념은 아님. Python Interpreter가 Python 코드 실행의 기본 주체 라면, ipykernel은 이 Python 실행 환경을 Jupyter와 연결하여 대화형으로 사용할 수 있도록 하는 Kernel 에 가까움. 구조를 단순화하면 다음과 같음. .py 실행 .py ↓ Python Interpreter ↓ 실행 Notebook에서는 다음 구조로 이해 가능함. .ipynb ↓ Jupyter / VS Code ↓ ipykernel ↓ Python 실행 환경 ↓ 실행 결과 반환 즉, ipykernel이 Python 자체를 대체하는 것이 아니라 Python 실행 환경을 Jupyter의 대화형 구조와 연결하는 역할 이라는 이해가 중요함. 7. 그렇다면 .ipynb 는 왜 Kernel을 선택해야 할까? ❓ 질문 .ipynb 파일은 Kernel을 연결해야 실행할 수 있는 것일까? 맞음. Notebook은 코드가 적혀 있는 문서이므로 어떤 실행 환경으로 해당 코드를 실행할 것인지 결정해야 함 . Python Notebook이라면 보통 Python 환경을 사용하는 ipykernel 선택이 필요함. VS Code에서는 오른쪽 위의 다음 메뉴에서 확인 가능함. Select Kernel 여기에서 프로젝트의 Python 가상환경 등을 선택하여 Notebook 실행 환경 지정 가능. 중요한 포인트 반드시 사용자가 매번 jupyter kernelspec 명령으로 직접 등록해야 한다는 의미는 아님. VS Code에서는 설치된 Python 환경을 찾아 Kernel로 선택할 수 있는 경우도 많음. 따라서 핵심은 다음과 같음. .ipynb 실행에는 어떤 Kernel을 사용할 것인지 연결이 필요함 8. 등록된 Kernel은 어떻게 확인할까? ❓ 질문 내 컴퓨터에는 어떤 Jupyter Kernel이 등록되어 있을까? 터미널에서 다음 명령 사용. jupyter kernelspec list 등록된 Kernel 목록 확인 가능. ❓ 질문 예전에 만든 Kernel이 너무 많다면 어떻게 삭제할까? 다음 명령 사용. jupyter kernelspec uninstall 삭제할커널이름 여기서 중요한 점은 Kernel 등록 정보를 삭제하는 것과 실제 Python 가상환경 폴더를 삭제하는 것은 다른 작업 이라는 점임. 즉, 일반적으로 kernelspec uninstall 은 Jupyter에 등록된 Kernel 정보를 제거하는 작업임. 9. 그렇다면 .py 파일은 무엇이 다를까? ❓ 질문 .ipynb 가 Kernel을 이용한다면 .py 는 완전히 다른 것일까? .py 는 일반적인 Python Script 파일 임. 예를 들어 다음 파일 존재. main.py 터미널에서 다음과 같이 실행 가능. python main.py Python Interpreter가 파일의 코드를 실행함. 10. .py 와 .ipynb 비교 구분 .py Python Script .ipynb Jupyter Notebook 기본 실행 방식 스크립트 단위 실행 Cell 단위 대화형 실행 실행 상태 실행 프로세스 종료 시 메모리 해제 Kernel이 살아 있는 동안 상태 유지 주요 용도 프로그램, 자동화, 서버, 배포 데이터 분석, AI 실험, 시각화 실행 환경 Python Interpreter Jupyter Kernel(ipykernel 등) 부분 실행 기본 실행은 전체 Script Cell 단위 실행 결과 확인 터미널 등 Notebook Cell 아래 Git 관리 일반 텍스트라 비교 용이 JSON 구조와 출력값 등으로 Diff가 복잡할 수 있음 11. 영화로 비유하면? .py 는 완성된 영화 에 가까움. 처음 ↓ 장면 1 ↓ 장면 2 ↓ 장면 3 ↓ 끝 일반적인 Script 실행에서는 처음부터 마지막까지 프로그램 흐름에 따라 실행됨. 반면 .ipynb 는 촬영 현장 과 비슷함. Scene 1 촬영 ↓ 결과 확인 Scene 2 촬영 ↓ 결과 확인 Scene 2 수정 ↓ 다시 촬영 따라서 데이터를 탐색하거나 AI 모델을 실험하는 과정에서 Notebook 방식의 장점 발생. 12. .py 가 끝나면 메모리는 어떻게 될까? ❓ 질문 .py 파일은 실행이 끝나면 메모리가 전부 사라지고 출력값만 남는 걸까? 일반적인 Script 실행 프로세스를 기준으로 보면 프로그램 종료와 함께 해당 프로세스가 사용하던 메모리도 해제됨. 흐름은 다음과 같음. 1 실행 시작 python main.py Python 프로세스 시작. 2 데이터 생성 a = 10 변수 a 가 실행 중인 프로세스의 메모리에 존재. 3 출력 print(a) 터미널에 다음 내용 출력. 10 4 프로그램 종료 마지막 코드까지 실행 완료 후 Python 프로세스 종료. 해당 프로세스가 사용하던 변수와 객체의 메모리 해제. 따라서 프로그램이 끝난 뒤 이전 실행의 a 를 다음 실행에서 그대로 가져오는 것은 불가능함. 13. 그렇다면 출력값은 남는 것 아닐까? 터미널에 다음 내용이 보일 수 있음. 10 하지만 이것은 a 라는 변수가 계속 Python 메모리에 존재한다는 의미가 아님. 터미널에 출력된 실행 기록 이 화면에 남아 있는 것임. 따라서 다음 실행에서 다시 해당 값이 필요하다면 재계산하거나 파일 등에 저장 필요. 예를 들어 CSV 저장. df.to_csv("result.csv") 이미지 저장. plt.savefig("result.png") 모델 저장. torch.save(model.state_dict(), "model.pt") 왜 저장이 필요할까? RAM의 변수와 SSD/HDD의 파일은 서로 다른 저장 방식이기 때문임. 프로그램 실행 중 ↓ RAM에 변수 존재 ↓ 프로그램 종료 ↓ RAM의 실행 상태 해제 반면 파일로 저장하면 다음 구조가 됨. 프로그램 실행 ↓ 결과 생성 ↓ 파일 저장 ↓ 프로그램 종료 ↓ SSD/HDD에 결과 파일 유지 14. 그런데 .py 에서도 pandas 같은 라이브러리가 필요하지 않을까? ❓ 질문 .py 는 Kernel이 필요 없다고 해도 pandas, numpy 같은 라이브러리는 필요하지 않을까? 당연히 필요함. 여기서 가장 중요한 구분이 등장함. Kernel 등록과 라이브러리 설치는 서로 다른 개념 15. 라이브러리 설치와 Kernel 등록의 차이 라이브러리 설치 pip install pandas 현재 Python 환경에 pandas 설치. Kernel 연결 Notebook이 어떤 Python 환경을 사용해서 코드를 실행할지 연결하는 과정 . 둘을 방으로 비유하면 다음과 같음. 가상환경 = 하나의 전용 방 pandas / numpy / torch = 방 안에 있는 도구 ipykernel = 그 방의 Python을 Jupyter와 연결해주는 역할 따라서 .py 와 .ipynb 모두 pandas를 사용한다면 실제로 실행되는 Python 환경에 pandas가 설치되어 있어야 함 . 16. 가상환경은 왜 필요할까? ❓ 질문 그냥 컴퓨터에 pandas를 한 번 설치하면 되는데 왜 굳이 가상환경을 만들까? 프로젝트마다 필요한 Python과 라이브러리 버전이 다를 수 있기 때문임. 예를 들어 다음 두 프로젝트 존재. 프로젝트 A Python 3.11 pandas 2.x torch 2.x 프로젝트 B Python 3.9 pandas 1.x tensorflow 특정 버전 모든 라이브러리를 하나의 전역 환경에 설치하면 프로젝트 간 버전 충돌 가능성 증가. 따라서 프로젝트별 독립 환경 구성. Project A └── .venv ├── Python ├── pandas └── torch Project B └── .venv ├── Python ├── pandas └── tensorflow 주방 비유 가상환경은 프로젝트 전용 주방 과 같은 개념. 프로젝트 A 주방에는 한식 재료가 있고, 프로젝트 B 주방에는 양식 재료가 있는 형태. 각 프로젝트가 자기에게 필요한 도구와 라이브러리만 사용하는 구조. 17. .py 는 어떤 가상환경의 라이브러리를 사용할까? ❓ 질문 컴퓨터에 가상환경이 여러 개 있다면 .py 는 어디의 pandas를 가져오는 걸까? 결국 어떤 Python Interpreter로 해당 파일을 실행했느냐 가 중요함. 가상환경을 활성화한 터미널에서 다음과 같이 실행한다고 가정함. python test.py 현재 활성화된 가상환경의 Python이 실행되고, 해당 환경에 설치된 라이브러리 사용. 예를 들어 macOS/Linux에서는 상황에 따라 다음과 같이 가상환경 활성화 가능. source .venv/bin/activate Windows에서는 환경과 Shell에 따라 다음과 같은 방식 사용. .venv\Scripts\activate 활성화 이후: python test.py 해당 가상환경의 Python과 라이브러리 사용. 18. VS Code의 Select Interpreter 는 무엇일까? ❓ 질문 VS Code에서 자꾸 Python: Select Interpreter 가 나오는데 도대체 무엇을 선택하라는 것일까? VS Code에게 다음을 알려주는 과정임. "이 프로젝트의 Python 코드를 어떤 Python 환경을 기준으로 처리할 것인가?" 컴퓨터에 다음 Python들이 존재할 수 있음. 시스템 Python Python 3.11 Python 3.12 Project A .venv Project B .venv Conda Environment VS Code 입장에서는 어떤 Python을 사용해야 하는지 결정 필요. 따라서 Select Interpreter 를 통해 프로젝트에서 사용할 Python 환경 선택. 19. VS Code에서 Python Interpreter 선택하기 macOS 명령 팔레트 실행. Cmd + Shift + P Windows Ctrl + Shift + P 검색창에 다음 입력. Select Interpreter 다음 메뉴 선택. Python: Select Interpreter 이후 프로젝트 내부 가상환경 선택. 예: .venv 또는 macOS/Linux의 경우 다음과 유사한 경로 확인. ./.venv/bin/python Windows에서는 다음과 유사한 경로 사용. .venv\Scripts\python.exe 20. 왜 Interpreter를 제대로 선택해야 할까? 예를 들어 .venv 에는 pandas가 설치되어 있다고 가정함. .venv ├── Python ├── pandas ├── numpy └── ipykernel 하지만 VS Code가 시스템 Python을 사용하고 있다면 다음 코드에서 오류 발생 가능. import pandas as pd 대표적인 오류: ModuleNotFoundError: No module named 'pandas' pandas가 컴퓨터에 전혀 없는 것이 아니라, 현재 코드를 실행하고 있는 Python 환경에는 pandas가 없는 상황 일 수 있음. 따라서 Python 환경 문제를 확인할 때 중요한 질문은 다음과 같음. "pandas를 설치했는가?" 뿐만 아니라 "지금 실행 중인 Python과 pandas를 설치한 Python이 같은 환경인가?" 라는 확인 필요. 21. 그렇다면 .venv 를 터미널에서 활성화하면 Interpreter 선택은 안 해도 될까? ❓ 질문 터미널에 (.venv) 가 떠 있다면 VS Code에서 Python Interpreter를 따로 선택하지 않아도 될까? 실행 방식에 따라 구분 필요. Case 1. 활성화된 터미널에서 직접 실행 터미널에 다음처럼 가상환경이 활성화되어 있다고 가정함. (.venv) 그리고 직접 다음 명령 실행. python test.py 이 경우 Shell의 python 이 활성화된 .venv 의 Python을 가리키도록 설정되어 있으므로 해당 환경을 이용한 실행 가능. 활성화된 .venv ↓ python test.py ↓ .venv의 Python ↓ .venv의 pandas 사용 Case 2. VS Code의 실행 버튼 이용 VS Code에서 오른쪽 위의 ▶ 버튼 등을 사용하는 경우에는 VS Code가 선택하고 있는 Python 환경 설정도 중요함. 따라서 VS Code 작업에서는 프로젝트의 .venv 를 Interpreter로 선택해 두는 것이 안전함. Cmd/Ctrl + Shift + P ↓ Python: Select Interpreter ↓ 프로젝트 .venv 선택 추천 설정 프로젝트를 열었을 때 한 번 다음 설정 수행. Select Interpreter ↓ .venv 선택 이를 통해 코드 분석, 실행, 디버깅 등의 환경을 프로젝트 가상환경과 일치시키기 쉬워짐. 22. 그런데 .py 에서도 Notebook처럼 조금씩 실행할 수 없을까? ❓ 질문 .py 파일은 항상 처음부터 끝까지 실행해야 할까? 일반적인 Script 실행은 파일 단위 실행이지만 VS Code에서는 .py 파일을 Cell 형태로 나누어 Interactive Window에서 실행하는 기능 사용 가능. 이때 사용하는 것이 다음 주석임. # %% 23. # %% 란 무엇일까? .py 파일에 다음처럼 작성. # %% [1번 블록] 데이터 정의하기 import pandas as pd a = 10 b = 20 print("데이터 입력 완료!") 다음 Cell 작성. # %% [2번 블록] 계산하기 result = a + b print(f"결과는? {result}") VS Code가 # %% 를 기준으로 코드 영역을 Cell처럼 인식 가능. 화면 위에 다음과 같은 메뉴 표시 가능. Run Cell Run Below Debug Cell Run Cell 을 누르면 해당 영역만 실행 가능. 24. # %% 을 사용하면 왜 메모리가 유지될까? ❓ 질문 .py 인데 왜 첫 번째 블록에서 만든 a 를 두 번째 블록에서 사용할 수 있을까? python test.py 로 일반 Script 실행을 하는 것이 아니라 VS Code의 Interactive Window 를 통해 실행하고 있기 때문임
То, что RADAR обнаружил и классифицировал для этой возможности. Это опубликованный источником текст, а не подтверждение, что предложение ещё действует.
# Jupyter, Kernel, ipykernel, 가상환경과 Python Interpreter 이해하기. Jupyter, Kernel, ipykernel, 가상환경과 Python Interpreter 이해하기 Python으로 데이터 분석이나 AI를 시작하면 생각보다 자주 마주치는 단어들이 존재함. .py .ipynb Jupyter Kernel ipykernel Python Interpreter 가상환경 라이브러리 Interactive Window 처음에는 전부 비슷해 보이지만 실제로는 각각 담당하는 역할이 다름 . 이번 글에서는 단순히 사용 방법만 외우는 것이 아니라 다음 질문을 하나씩 해결하면서 전체 구조를 이해하는 것이 목적임. "내가 VS Code에서 작성한 Python 코드는 도대체 누가…
Открыть источник