맥오에스 15.2에 홈브류 깔고 파이썬 가상화
혹시 이런 생각, 해보신 적 없으신가요?
"코딩을 하나도 모르는데, 내가 직접 프로그램을 만들 수 있을까?"
처음에는 저 역시 '말도 안 돼'라며 믿기 어려웠습니다. 아마 많은 분들이 고개를 갸웃하실지도 모르겠습니다.
정말! 이런 게 가능할까?
에이 말도 안 돼.
설마!
하지만 저는 ChatGPT나 Claude AI와 같은 인공지능을 사용해보면서, 그 막연했던 생각이 점차 가능할 수도 있겠다는 조심스러운 확신으로 바뀌는 것을 경험했습니다.
물론, 이 놀라운 경험을 현실로 만들기 위해서는 약간의 준비 과정이 필요합니다. 제가 주로 Mac을 사용하는 환경에 있어 Mac OS를 기준으로 설명드리는 점 미리 양해 부탁드립니다. 이 준비 단계가 조금은 낯설게 느껴지실 수도 있습니다.
하지만 이 과정만 차근차근 따라오시면, 다음 단계부터는 정말 한국어만으로도 소프트웨어 개발이라는 새로운 세계에 한 걸음 다가설 수 있습니다.
AI 모델은 주로 ChatGPT를 활용할 예정이며, 필요에 따라 Claude AI, Grok, Gemini의 도움도 받을 생각입니다.
부디 저의 경험이 여러분께도 '나도 할 수 있다'는 작은 용기를 드릴 수 있기를 바랍니다.
AI와 함께 코딩을 하려면 가장 먼저 준비해야 할 것이 있어요. 바로 홈브류(Homebrew)라는 건데요.
맥에서 홈브류(Homebrew)는 아주 유용한 소프트웨어 패키지 관리자입니다. 조금 생소하게 들릴 수 있지만, 복잡한 프로그램 설치 과정을 마법처럼 간단하게 만들어주는 정말 고마운 친구랍니다. 앞으로의 작업을 편하게 만들어 줄 든든한 지원군이니, 이번에 저와 함께 차근차근 설치해보시면 어떨까요?
1) 터미널과 친해지기
먼저 맥 독(Dock)에서 런치패드(Launchpad)를 클릭해서 'Other' 폴더에서 '터미널(Terminal)'을 찾아 실행해주세요.
아마 많은 분들께는 이 까만 화면이 조금 낯설고 어렵게 느껴질 수 있어요. 저도 그랬거든요. 하지만 앞으로 귀찮은 반복 작업을 대신해 줄 정말 고마운 친구이니, 이번 기회에 조금만 친해져 보기로 해요.
2) 홈브류 설치 명령 실행 : 터미널에 아래 코드를 Copy & Pate.
터미널이 열렸다면 아래 보이는 코드를 그대로 복사(Copy)해서 붙여넣기(Paste) 해주세요. 그리고 엔터 키를 눌러주시면 돼요.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
3) 비밀번호 입력하기
설치 도중 sudo 비밀번호를 입력하라는 메시지가 표시될 수 있습니다. Mac의 관리자 비밀번호를 입력하세요.
4) 홈브류 설치 확인
자, 이제 마지막 단계예요. 설치가 잘 되었는지 확인해볼게요. 터미널에 아래 명령어를 입력해보세요.
brew --version
만약 저처럼 Homebrew 4.x.x 같은 버전 정보가 보인다면 성공적으로 설치된 거랍니다! 정말 고생 많으셨어요. 첫 단추를 아주 잘 끼우셨습니다.
이제 AI와 본격적으로 대화할 언어를 준비할 차례예요.
맥이든 윈도우든 가리지 않고 잘 통하는 파이썬이 제 생각엔 가장 좋은 선택지 같더라고요. 저희는 다 같이 편하게 작업하려고 버전을 3.12로 맞췄지만, 다른 버전을 쓰셔도 전혀 문제없으니 부담 갖지 않으셔도 괜찮아요.
1) 홈브류 업데이트
좋은 도구는 항상 최신 상태로 유지해주는 게 좋다고들 하죠? 터미널에 아래 명령어를 입력해서 홈브류를 한번 새로고침 해줄게요.
brew update
2) 파이썬 3.12 설치
이제 오늘의 주인공 파이썬을 설치해 보겠습니다. 아래 명령어를 터미널에 입력해주세요.
brew install python@3.12
3) 설치 확인
설치가 잘 끝났는지 마지막으로 확인해봐야겠죠? 아래 명령어를 입력했을 때...
터미널에 Python 3.12.x 처럼 버전이 예쁘게 나오면 성공입니다!
python3.12 --version
기본적으로 python3 명령어는 이미 시스템에 설치된 최신 파이썬 버전을 가리키도록 설정되어 있습니다. 하지만, 업데이트된 파이썬 3.12를 기본으로 사용하려면 다음 단계를 수행합니다.
지금 맥에는 원래부터 있던 파이썬과(3.9.6) 우리가 새로 설치한 파이썬이 함께 살고 있어요. 그래서 앞으로 터미널에서 python3라고 불렀을 때, 우리가 설치한 3.12 버전이 "네!" 하고 대답하도록 길을 알려주는 작업이랍니다.
이렇게 터미널에서 Python3 입력 시에 시스템 기본 Python 3.9.6으로 실행되던 경로를 새로 설치한 3.12로 연결합니다.
1) 파이썬 버전 연결해주기 python 3.9.6 -> 3.12 씸볼릭 링크 설정
컴퓨터에게 python3는 새로 설치한 3.12 버전이라고 알려주는, 일종의 '바로가기'를 만드는 과정이라고 생각하시면 쉬워요.
시스템 기본 Python을 무시하고 홈브류 Python 3.12를 강제로 연결합니다.
python 3.12가 설치된 경로를 찾아서 씸볼릭 링크로 연결합니다.
먼저, 새로 설치한 파이썬 3.12가 어디에 있는지 알아볼게요.
터미널에 아래 명령어를 입력해보세요. 홈브류가 친절하게 경로를 알려줄 거예요.
brew info python@3.12
위 이미지의 경로 /usr/local/Cellar/python@3.12/3.12.8/bin은 실제 Python 3.12의 실행 파일이 있는 곳이 아니라 씸볼릭 링크 파일로 연결되어 있습니다. 따라서 실제 설치된 경로를 찾아서 연결합니다.
이제 '바로가기'를 만들어 줄 차례예요.
아래 코드는 조금 길고 복잡해 보일 수 있는데요 천천히 설명해 드릴게요.
sudo: "제가 지금부터 하는 작업은 중요하니까, 관리자 권한을 잠시 빌릴게요!" 라는 뜻이에요.
ln -sf [실제 파일 위치] [바로가기 이름]: '이 위치에 있는 파일을 이 이름의 바로가기로 만들어 주세요' 라는 의미랍니다.
아래 명령어를 그대로 복사해서 터미널에 붙여넣어 주세요. (비밀번호를 물어보면 맥 로그인 비밀번호를 입력해주시면 돼요.)
해당 경로에서
ls -n 씸볼릭 링크 명령어 실행.
씸볼릭 링크 연결
python3을 실행했을 때, 3.12가 실행되도록 아래와 같이 씸볼릭 링크를 설정합니다. (구버전 3.9.6 경로 /usr/local/bin/python3)
파이썬 3.12 실행 파일이 있는 경로는
/usr/local/Cellar/python@3.12/3.12.8/Frameworks/Python.framework/Versions/3.12/bin/python3.12
구버전 3.9.6 실행 파일 씸볼릭 링크 경로는
/usr/local/bin/python3
아래와 같이 씸볼릭 링크 연결.
sudo ln -sf /usr/local/Cellar/python@3.12/3.12.8/Frameworks/Python.framework/Versions/3.12/bin/python3.12 /usr/local/bin/python3
연결이 잘 되었는지 확인해볼까요?
터미널에 아래 명령어를 입력했을 때, 화살표(->)가 우리가 설치한 3.12 버전을 잘 가리키고 있으면 성공이에요!
cd /usr/local/bin
ls -l
마지막으로 터미널에게 바뀐 내용을 기억하라고 알려줘야 해요.
아래 명령어를 입력해주시거나, 그래도 바뀌지 않는다면 터미널을 완전히 껐다가 다시 켜주시면 됩니다.
hash -r
여전히 변경되지 않는다면, 로그아웃 후 재로그인하거나 터미널을 완전히 닫고 다시 엽니다.
자, 이제 정말 마지막으로 터미널에 python3, python3 --version 이라고 입력해보세요. Python 3.12.x 라고 보인다면 성공입니다.
또는,
python3 --version 입력해서 확인합니다.
2) 파이썬의 단짝, pip3도 연결해주기
pip는 파이썬의 여러 가지 유용한 도구들을 설치하게 해주는 '파이썬의 앱스토어' 같은 친구예요. 이 친구도 방금 설치한 3.12 버전과 짝을 맞춰주는 게 좋겠죠?
pip3(Python의 패키지 관리 도구)도 Python 3.12로 연결.
MacOS에서는 /usr/local/bin 디렉터리가 사용자 정의 명령어를 추가하는 데 적합합니다. 여기에서 pip3를 Python 3.12에 연결합니다.
sudo ln -sf /usr/local/Cellar/python@3.12/3.12.8/Frameworks/Python.framework/Versions/3.12/bin/pip3.12 /usr/local/bin/pip3
이제 AI 코딩을 위한 거의 마지막 준비 단계예요. 이번에는 '가상 환경'이라는 걸 만들어 볼 텐데요, 조금 낯선 개념일 수 있지만 정말 유용하답니다.
쉽게 말해, 프로젝트마다 독립된 나만의 작업실을 만들어주는 거라고 생각하시면 돼요.
예를 들어 A 프로젝트에서는 파란색 물감만 쓰고, B 프로젝트에서는 빨간색 물감만 써야 할 때, 작업실을 따로 두면 물감이 섞일 걱정이 없겠죠? 가상 환경이 바로 그런 역할을 해준답니다. 여러 도구들이 서로 엉키지 않게 깔끔하게 관리해주는 핵심 개념입니다.
예: 프로젝트 A는 Python 3.9를 사용하고, 프로젝트 B는 Python 3.12를 사용해야 할 경우. 가상 환경을 사용하면 각 프로젝트에 적합한 Python 버전을 별도로 설정할 수 있습니다. 아래 예제는 "p312" 폴더를 생성해서 그 폴더 내부에 필요한 패키지를 설치해서 개발 환경을 만들어 나가는 구조입니다.
1) 프로젝트 폴더 만들기
먼저 우리가 앞으로 작업할 소중한 공간, 프로젝트 폴더를 하나 만들어 줄게요.
mkdir my_project # 'my_project'라는 이름의 폴더를 만들고,
cd my_project # 그 폴더 안으로 들어갑니다.
2) 나만의 아지트, 가상 환경 만들기
이제 이 폴더 안에 p312라는 이름의 비밀 아지트(가상 환경)를 만들어 볼게요.
python3 -m venv p312
# "파이썬 3야! venv(가상 환경) 도구를 써서 'p312'라는 공간을 만들어줘"
물론 p312라는 이름은 제가 임의로 정한 거라, 원하시는 다른 이름으로 바꾸셔도 괜찮아요!
3) 가상 환경에 입장하기 (활성화)
자, 이제 만들어진 아지트의 문을 열고 들어가 볼까요?
가상 환경을 활성화하려면 다음 명령을 실행합니다:
MacOS/Linux:
source p312/bin/activate
Windows (CMD):
p312\Scripts\activate
Windows (PowerShell):
.\p312\Scripts\Activate.ps1
짜잔! 터미널 맨 앞에 (p312)라는 이름표가 붙었나요? 그렇다면 가상 환경에 성공적으로 입장하신 거예요! 이제부터 설치하는 모든 도구들은 이 p312 아지트 안에만 얌전히 설치된답니다.
작업이 끝나면? (비활성화)
아지트에서 나와야 할 때는 deactivate 한 마디만 입력해주시면 원래의 터미널로 돌아올 수 있답니다. 정말 간단하죠?
이제 진짜 AI와 함께 무언가를 만들어 볼 준비가 거의 다 끝났어요. 여기까지 오신 것만으로도 정말 대단한 일을 해내신 거예요.
deactivate
이번에는 정말 신기하고 재미있는 도구를 설치해 볼 거예요. 바로 OpenCV라는 친구인데요, 컴퓨터에게 '보는 눈'을 선물해주는 마법 같은 라이브러리랍니다.
이미지나 동영상을 자유자재로 다루게 해줘서, 특별한 동영상 플레이어를 만들거나 사진 속에서 무언가를 찾아내는 등 멋진 일들을 할 수 있게 도와줘요. 제가 생각하기에 사내 프로그램을 만들 때 정말 유용한 도구가 될 수 있을 것 같아요.
OpenCV(Open Source Computer Vision Library)는 컴퓨터 비전과 이미지 처리 작업을 위한 오픈소스 라이브러리입니다. OpenCV는 다양한 프로그래밍 언어(Python, C++, Java 등)를 지원하며, 특히 이미지와 동영상 처리와 관련된 강력한 기능을 제공합니다.
1) 필요한 도구 설치하기 (pip)
우리가 만들어 둔 (p312) 아지트 안에서 필요한 도구를 꺼내오는 과정이에요. 터미널에 아래 주문을 외워주세요. OpenCV는 opencv-python 패키지를 통해 설치할 수 있습니다.
가장 기본적인 OpenCV 설치:
pip install opencv-python
추가적으로 OpenCV의 전체 기능을 포함한 패키지 설치:
pip install opencv-python-headless
opencv-python-headless는 GUI 관련 기능 없이 OpenCV를 설치합니다. GUI 기능이 필요 없다면 이 패키지를 사용하는 것이 좋습니다.
OpenCV 전체 기능 설치 (옵션):
OpenCV의 모든 추가 모듈과 함께 설치하려면:
pip install opencv-contrib-python
2) 설치 확인: "똑똑, OpenCV 계세요?"
설치가 잘 되었는지 확인해봐야 마음이 편하겠죠?
터미널에 python이라고 입력해서 파이썬과 대화할 수 있는 모드로 들어가 주세요.
python
그다음, 아래 두 줄을 차례대로 입력해 보세요.
import cv2
print(cv2.__version__)
만약 4.10.0 처럼 버전 숫자가 예쁘게 보인다면, 이번 미션도 성공입니다! 이제 우리 프로그램은 '눈'을 갖게 되었어요.
4.10.0
이렇게 앞으로도 우리만의 작업실(p312)에 필요한 도구들을 pip install 이라는 명령어로 하나씩 채워나가면 된답니다.
pip list
이제 우리가 만들 프로그램에 버튼도 있고 창도 있는 예쁜 '얼굴'(GUI)을 만들어 줄 차례예요.
보통 AI (ChatGPT)에게 물어보면 Tkinter라는 도구를 추천해 주곤 하는데요. 그것도 물론 좋지만 제 경험상 조금 더 예쁘고 다채로운 기능을 원한다면 PyQt5가 좋은 선택이더라고요. (물론 최신 버전인 PyQt6도 아주 좋습니다!)
아래는 우리 팀이 ChatGPT, Claude와 함께 PyQt5를 이용해 만들어 본 사내 스케줄러 앱 화면이에요. 이처럼 꽤 근사한 프로그램을 만들 수 있답니다.
1) PyQt5 설치하기
가장 먼저 우리만의 작업실인 (p312)로 들어가는 것. 잊지 않으셨죠?
아직 들어가지 않았다면 터미널에 source p312/bin/activate를 입력해주세요.
그 다음, 아래 명령어로 PyQt5를 설치해 줍니다.
pip install pyqt5
2) 설치 확인: "설치 잘 됐을까?"
설치가 잘 되었는지 확인하는 두 가지 방법을 알려드릴게요. 편한 방법으로 해보시면 돼요.
방법 1: 직접 불러보기
터미널에 python을 입력해 파이썬과 대화를 시작한 뒤, 아래 코드를 입력해보세요. 파이썬에게 'PyQt5야, 잘 있니?' 하고 물어보는 거예요.
python
PyQt5를 import:
from PyQt5.QtWidgets import QApplication, QLabel
print("PyQt5 is installed and working!")
아무런 오류 메시지 없이 위 문구가 보인다면, 이것도 성공입니다.
방법 2: 출석부 확인하기
터미널에 pip list를 입력해보세요. 설치된 도구들의 목록이 쭉 나올 텐데, 그 목록에 PyQt5가 보인다면 잘 설치된 거랍니다.
pip list
가장 어렵고 낯설 수 있는 모든 준비 과정이 드디어 끝났습니다. 여기까지 따라오신 것만으로도 여러분은 이미 절반 이상 해내신 거예요.
이제부터는 정말 한국어로 AI와 대화하며, 우리가 상상하던 프로그램을 현실로 만들어 볼 시간이에요. 준비되셨나요?
자, 이제 정말 마지막 준비물만 남았어요. 우리가 AI와 함께 만든 코드를 직접 실행하고 다듬을 수 있는 '작업대'가 바로 코딩 툴입니다.
보통 많은 개발자분들은 VSCode라는 아주 훌륭한 도구를 사용하시는데요, 정말 좋은 툴이 맞아요. 하지만 저희처럼 코딩이 처음이고 AI의 도움을 적극적으로 받고 싶다면, 저는 조심스럽게 Cursor를 추천해 드리고 싶어요.
Cursor는 인공지능(AI)을 기반으로 한 최신 코드 편집기로, 개발자들이 코드를 작성하고 디버깅하는 과정을 보다 효율적으로 지원합니다. 이 툴은 Visual Studio Code를 기반으로 하여 대규모 언어 모델(LLM) 기능이 통합되어 있습니다. Cursor는 개발자의 의도를 이해하고, 코드 작성을 지원하며, 다양한 프로그래밍 언어에 대한 지원을 제공합니다. 사용해보시면 아마 "아, 이래서 추천했구나" 하고 느끼실 수 있을 거예요.
제가 Cursor를 추천해 드리는 이유는 다음과 같아요.
실수도 괜찮아: AI가 만들어준 코드를 실행하고 혹시 모를 오류도 함께 고쳐줘요.
찰떡같은 소통: 만들고 싶은 걸 한국말로 설명하면 AI가 더 잘 알아들을 수 있게 질문(프롬프트)을 다듬어줘요.
알아서 척척: 코드를 고치고 싶을 때 말로만 해도 척척 수정해주고, 필요한 도구(라이브러리)가 있으면 알아서 설치까지 해준답니다.
말로만 들으면 잘 와닿지 않으실 수 있으니 작은 예를 하나 보여드릴게요.
"macOS 스타일의 타이머 앱을 위한 프롬프트 작성해 줘"라고 요구했을 때.
Cursor는 코딩을 잘 모르는 제 의도를 더 똑똑하게 파악해서, AI에게 훨씬 더 구체적이고 좋은 질문을 대신 던져주더라고요.
아래는 일반 ChatGPT가 만들어준 코드로 실행한 결과물이에요. 이것도 훌륭하지만, Cursor의 도움을 받으면 여기서부터 더 발전시키기가 훨씬 수월해진답니다.
1) ChatGPT
ChatGPT로 작성한 프롬프트로 만든 타이머 앱.
ChatGPT 프롬프트:
"macOS 디자인 언어를 기반으로 한 타이머 앱. 미니멀하고 세련된 UI를 갖추고 있으며, 깔끔한 타이포그래피와 반투명한 배경 효과를 사용. 타이머 설정, 시작, 일시정지, 재설정 버튼이 직관적으로 배치되어 있음. macOS의 다크 모드와 라이트 모드에 적합한 두 가지 테마를 제공하며, 각 모드에서 섬세한 음영과 부드러운 애니메이션 효과를 표현. 우아한 모노톤 컬러 팔레트와 정갈한 인터페이스가 돋보이는 디자인."
디자인 포인트:
macOS 디자인 언어: 반투명한 창, 부드러운 곡선, 섬세한 음영.
테마: 다크 모드와 라이트 모드.
기능: 타이머 설정, 시작, 일시정지, 재설정 버튼.
스타일: 미니멀리즘, 정렬된 인터페이스, 깔끔한 타이포그래피.
2) Cursor
위에는 ChatGPT가 만들어준 코드로 실행해 본 모습이에요. 물론 이것만으로도 충분히 훌륭하죠? 하지만 제 경험상, Cursor의 도움을 받으면 여기서부터 프로그램을 더 멋지게 발전시키는 과정이 훨씬 편안해지더라고요. 둘의 차이가 확 느껴지나요?
Cursor 프롬프트
Create a macOS Timer app clone using PyQt5. The app should look and function exactly like the macOS Timer app.
1. Window Design:
- Window title: "Timer"
- Window size: 400x500 minimum
- Dark theme matching macOS
2. Top Navigation:
- Tab bar with:
* World Clock
* Alarms
* Stopwatch
* Timers (selected)
- Tabs should have macOS-style appearance
- Light gray text (#888888) for inactive tabs
3. Timer Interface:
- Time unit labels:
* "hr", "min", "sec" in light gray (#888888)
* Centered above time input
- Time input spinboxes:
* Hours (0-23)
* Minutes (0-59)
* Seconds (0-59)
* Connected with ":" separators
* Dark background (#2C2C2C)
* White text
* No spin buttons visible
- Large time display:
* Format: "00:25:00"
* Font size: 60pt
* White text
* Semi-transparent dark background
* Rounded corners
- Timer name section:
* "Timer" label in light gray
* Text input field with "Shelter" default text
- Sound selection:
* "Sound" label in light gray
* Dropdown with macOS system sounds
* Dark background matching the theme
4. Control Buttons:
- Cancel button:
* Gray background (#3A3A3A)
* White text
* Rounded corners
- Start button:
* Green background (#34C759)
* White text
* Rounded corners
* Changes to "Pause" when timer is running
5. Functionality:
- Timer countdown:
* Update every second
* Display in large time display
* Play selected sound when finished
- Start/Pause:
* Start countdown
* Pause functionality
* Resume from paused state
- Cancel:
* Reset to default state (25 minutes)
* Stop countdown if running
6. System Integration:
- macOS system sounds:
* Glass.aiff (default)
* Tink.aiff
* Hero.aiff
* Morse.aiff
* Ping.aiff
* Pop.aiff
* Purr.aiff
* Submarine.aiff
* Blow.aiff
* Bottle.aiff
* Frog.aiff
* Funk.aiff
* Sosumi.aiff
- Sound playback using 'afplay'
7. Technical Requirements:
- PyQt5 implementation
- QTimer for countdown
- Error handling for sound playback
- Clean code organization
- Proper commenting
- Debug logging for development
8. CSS Styling:
QMainWindow {background-color: #1E1E1E;}
QPushButton { background-color: #3A3A3A; border: none; color:# white; padding: 10px 20px; border-radius: 5px; min-width: 80px; }
QPushButton#startButton { background-color: #34C759; }
QLineEdit, QSpinBox { background-color: #2C2C2C; color:# white; border: none; padding: 5px; font-size: 24px; }
3) Cursor와 우리만의 파이썬 연결하기
이제 정말 마지막으로 Cursor에게 우리가 앞에서 설치한 파이썬 친구를 소개해주는 일만 남았어요.
Cursor 화면 오른쪽 아래를 보시면, 현재 어떤 파이썬을 사용할지 선택하는 부분이 보일 거예요. 거기를 클릭해서 우리가 열심히 설치했던 파이썬 3.12 버전을 선택해주세요. 이 과정을 거쳐야 AI가 만들어준 코드를 바로바로 테스트해 볼 수 있답니다
드디어, 모든 준비가 끝났습니다!
여기까지 오시느라 정말 고생 많으셨어요. 조금은 낯설고 복잡한 과정이었을 텐데, 끈기 있게 따라와 주셔서 정말 감사합니다.
이제부터는 정말 우리가 상상하던 것들을 한국어로 ChatGPT나 Claude, Grok, Gemini에게 질문하며 하나씩 현실로 만들어 나갈 시간이에요.
"나도 개발자가 될 수 있을까?" 라는 작은 질문에서 시작된 여정. 이제 그 설레는 다음 장을 함께 넘겨볼까요?