가끔 아무 프로그램이나 만들어 보고 싶어 질 때가 있습니다.
지난번에는 HTML과 JS, CSS로 만든 웹사이트를 설치형 프로그램으로 빌드한 적이 있는데,
이번에는 Python을 이용하여 프로그램을 빌드해 보고자 시도해 봤습니다.
근데 생각보다 너무 쉬워서 정리해 두는 겁니다.
*파이썬 파일 열 줄 안다 하는 분은 5번부터 보시면 됩니다.
1. 준비물
1) 프로그램을 빌드하는데 필요한 준비물입니다.
PC를 준비하고 VSCode를 설치합니다.
https://code.visualstudio.com/download
Download Visual Studio Code - Mac, Linux, Windows
Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.
code.visualstudio.com
위 사이트에서 운영체제에 맞는 버전으로 설치하면 되고요.
그럼 끝입니다.
2. Python 설치 및 폴더 생성
1) Python 설치
VScode를 설치하셨으면 마켓플레이스 or 익스텐션이라고 부르는 아이콘을 누릅니다.
위에서 다섯 번째에 있는 블록 모양의 아이콘 눌러주시면 됩니다.
그리고 Python이라고 검색하면 비슷한 아이콘 세 개 나오는데 Python입니다. 헷갈리시면 안 됩니다.
2) 바탕화면에 연습용 폴더 생성
이름은 상관없습니다.
pyApp이라고 대충 지어주고 그 안에 test라는 폴더를 또 만들어 주겠습니다.
3. VSCode에서 작업 폴더 열기
1) VSCode 상단 메뉴에서 파일 > 폴더 열기 클릭
폴더 열기를 클릭 후 좀 전에 생성한 폴더 경로로 이동합니다.
4. 파이썬 파일 생성
1) 새 파일 생성으로 파이썬의 확장명인. py로 끝나는 파일을 하나 만들어 줍니다.
1번 영역(탐색기 영역)에 마우스 우클릭 후 새 파일 클릭 하여 만들거나,
2번 아이콘(새 파일 추가) 클릭해서 만들어 줍니다.
물론 여러 다른 방법이야 많지만 어차피 차차 자연스레 알게 됩니다.
대충 아래처럼 Notice.py라는 이름으로 생성해 보겠습니다.
5. 파이썬 가상환경 설정
1) 파이썬 코드를 짜서 프로그램으로 빌드할 수 있도록 가상환경 생성합니다.
python -m venv venv
위 명령어를 터미널에 입력하고 엔터를 치면 되는데 터미널이 뭐냐면
내가 짠 코드와 파일을 어떻게 할 것이다~라고 명령어를 입력하는 곳입니다.
어떻게 실행하냐면
방법은 총 두 개입니다. 위에서 설명한 탐색기 영역에 마우스 우클릭 후 터미널에서 열기 클릭,
아니면 그냥 Ctrl + ` (숫자 1 왼쪽에 있는 겁니다.) 누르면 됩니다.
그럼 이렇게 VSCode 아래에 터미널이 열립니다.
만약 맨 우측에 적힌 경로가 Test가 아니라면
cd Test
라고 입력 후, 엔터를 한 번 눌러주세요.
Test 경로로 이동한다는 의미입니다.
아무튼 위에서 알려드린 가상환경 생성 명령어를 입력 후 엔터를 쳐주세요.
2) 파이썬 가상환경을 활성화합니다.
파이썬 가상환경을 생성했다고 사용하는 것이 아니라,
가상환경은 그저 내가 가상의 환경에서 파이썬 코드를 작성하고 빌드하겠다는 의미입니다.
그 가상환경에 접속하겠다는 명령어 또한 입력해 주어야 합니다.
윈도우는
venv\Scripts\activate
Mac에서는
source venv/bin/activate
을 터미널에 입력 후 마찬가지로 엔터를 쳐줍니다.
이쯤 되면 눈치채셨겠지만, 명령어를 입력함으로써
venv라는 폴더와 환경이 VSCode에 직관적으로 표시되게 됩니다.
만약, 이렇게 안되어있다면 잘못한 겁니다.
처음부터 다시 하면서 순서를 익히시는 것을 추천합니다.
6. PyInstaller 설치 및 실행파일 빌드
1) PyInstaller를 Install 합니다.
파이썬 프로그램을 빌드하는 라이브러리입니다. 아래 명령어를 터미널에 입력합니다.
pip install pyinstaller
대충 아래처럼 뜨면 일단은 되긴 된 겁니다.
내용을 정확히 알 필요는 없습니다만 error 같은 게 있으면 그건 문제입니다.
2) 파이썬 코드를 실행파일로 빌드합니다.
먼저, 파이썬 코드를 미리 Notice.py 파일에 작성해 둡니다.
아까 설명했어야 했는데 귀찮아서 한 번에 하려고 이제 설명하는 거고,
원래는 가장 먼저 .py 파일 생성하자마자 코드부터 작성하는 게 편합니다.
아래 코드는 버튼을 클릭하면 숫자가 올라가는 간단한 코드입니다.
일단 복사해서 Notice.py 에 붙여 넣기 합니다.
import tkinter as tk
def increase():
# 현재 숫자를 가져와서 1 증가시킴
current_value = int(label['text'])
label.config(text=str(current_value + 1))
# 메인 윈도우 생성
root = tk.Tk()
root.title("Number Incrementer")
# 레이블 생성
label = tk.Label(root, text="0", font=("Arial", 24))
label.pack(pady=20)
# 버튼 생성
button = tk.Button(root, text="Up", command=increase, font=("Arial", 16))
button.pack(pady=20)
# GUI 실행
root.mainloop()
코드를 입력 후에는 Ctrl + s를 눌러서 저장합니다.
그리고 터미널에 아래의 명령어를 입력해서 엔터를 누르면
파이썬 코드를 프로그램으로 빌드합니다.
pyinstaller --onefile --windowed Notice.py
명령어를 잠시 설명해 주자면, pyinstaller 라이브러리를 사용해서
윈도우 체제의 Notice.py 파일을 프로그램으로 빌드하겠다.라는 의미입니다.
당연히 윈도우에서만 실행이 가능한 프로그램이
Notice.py에 작성한 코드의 내용대로 만들어집니다.
7. 프로그램 실행파일 확인
1) 탐색기 영역에서 dist 폴더가 생성되었는지 확인합니다.
터미널에 뭔가 촤르르- 되면서 탐색기를 살펴보면
Test 폴더 안에 build와 dist폴더가 생성된 것을 볼 수 있습니다.
dist는 설치 프로그램으로 빌드가 정상적으로 되었을 때 생성됩니다.
dist 폴더 안에 exe 형식의 프로그램 실행 파일이 존재합니다.
8. 프로그램 실행
1) 폴더에 들어가서 dist내부에 있는 실행 파일을 확인해 보세요.
Test 폴더 > dist 폴더로 들어가면 Notice라는 이름으로 실행 파일이 생성되어 있습니다.
제대로 만들어졌는지 눌러봅시다.
클릭해 보니...
잘 나오네요! 처음에는 좀 작게 나오지만.. 가로로 늘리면 이런 모양이 됩니다.
9. 프로그램 크기와 위치 변경
1) 프로그램 크기 및 위치 변경을 해보겠습니다.
아래의 코드를 Notice.py 에 추가 후 저장합니다.
root.geometry("400x300+100+100")
이게 무슨 코드냐면,
너비 400픽셀, 높이 300픽셀, 화면의 왼쪽 상단에서 (100, 100) 위치라는 의미인데
Notice.py에 추가한 전체 코드를 보여드리자면 아래와 같습니다.
import tkinter as tk
def increase():
"""현재 숫자를 가져와서 1 증가시킴"""
current_value = int(label['text'])
label.config(text=str(current_value + 1))
# 메인 윈도우 생성
root = tk.Tk()
root.title("Number Incrementer")
# 윈도우 크기와 위치 설정
root.geometry("400x300+100+100") # 너비 400픽셀, 높이 300픽셀, 화면의 왼쪽 상단에서 (100, 100) 위치
# 레이블 생성
label = tk.Label(root, text="0", font=("Arial", 24))
label.pack(pady=20)
# 버튼 생성
button = tk.Button(root, text="Up", command=increase, font=("Arial", 16))
button.pack(pady=20)
# GUI 실행
root.mainloop()
꼭 코드를 저장하시고, 다시 빌드해 보겠습니다.
2) 프로그램 재빌드하기
pyinstaller --onefile --windowed Notice.py
빌드 명령어를 다시 터미널에 입력 후 엔터를 치면
기존 실행 파일에 덮어씌워 최신 코드로 프로그램을 생성합니다.
참고로 프로그램 명을 지정하고 싶으면 아래 명령어처럼
원하는 이름을 지정하면 됩니다.
Count라는 이름으로 프로그램을 빌드해 보겠습니다
pyinstaller --onefile --windowed --name=Count Notice.py
* 이름을 바꿨기 때문에 Notice도 그대로 있고 Count가 새로 생길 겁니다.
잘 생겼네요. 실행해 보겠습니다.
원하는 크기로 잘 실행되는 것을 확인할 수 있습니다.
10. 프로그램 아이콘 변경
1) 마지막으로 프로그램 실행 파일의 아이콘을 변경해 봅시다.
아이콘 파일의 확장명은 .ico 입니다.
사진의 확장명이 .jpg나 png이고 음악 파일의 확장명이 .mp3 인거랑 같은 개념입니다.
어쨌거나 우리는 아이콘을 변경하기 위해 ico 파일을 구해야 합니다.
일단 아이콘으로 하고 싶은 파일을 구해줍니다.
미리캔버스 등에서 만든 배경이 투명한 png 파일을 추천합니다.
그리고 아래의 링크에 접속하여 png를 ico로 변환합니다.
https://convertio.co/kr/png-ico/
PNG ICO 변환 (온라인 무료) — Convertio
png 파일(들) 업로드 컴퓨터, Google Drive, Dropbox, URL에서 선택하거나 이 페이지에서 드래그하여 선택해 주세요.
convertio.co
2) ico파일을 폴더에 위치시킵니다.
ico 파일이 준비되었다면, 아이콘 파일을 Notice.py와 같은 경로에 옮깁니다.
쉽게 말해서 Test 파일 안에 넣으라는 겁니다.
요렇게.. 보이시죠?
그리고 아이콘 경로까지 지정하여 다시 빌드 명령어를 터미널에 입력합니다.
pyinstaller --onefile --windowed --icon=Icon.ico --name=Count Notice.py
3) 액세스 에러 발생 대처
그런데 불길한 에러가 발생하였습니다.
이것은 파일 또는 디렉터리에 대한 액세스 권한이 없다는 것을 의미합니다.
내가 만든 프로그램인데 권한이 없다니?
사실 별거 아닙니다.
만든 프로그램이 열려있기 때문에 발생하는 오류니까
열려있는 프로그램 걍 종료하고 다시 명령어 입력해 줍니다.
4) 그래도 아이콘 적용이 안 되는데요?
맞습니다. 저도 그래서 머리 싸매고 ChatGPT에게 물어보고 해 봤는데
결국 원인을 찾아냈습니다.
생성되어 있는 프로그램을 삭제 후 다시 명령어를 통해 빌드하거나
프로그램 이름을 다르게 해서 다시 명령어 입력해서 빌드하면 됩니다.
저는 이름 뒤에 2를 입력해서 빌드해 보았더니... 보이시죠?
이렇게 파이썬 프로그램 빌드하는 방법 설명을 마칩니다..
만든 프로그램은 구글 클라우드 등을 통해 올려두고 링크 공유로 배포도 할 수 있습니다.
다만, 배포했을 때, 개인이 만든 프로그램이라 정식 인증이 안되었다 보니
몇 개의 설치 허용 단계를 거치게 됩니다.
* 그리고 마이크로소프트에서는 이상하게 다운이 안되더군요.. 크롬이 잘 됩니다.
간단한 예제 코드를 통해 만들어보았는데
내용은 길지만 막상 해보면 5분이면 합니다.
이제 본격적인 코드를 짜서 기능과 스타일을 구현하고 싶다구요?
하하! ChatGPT한테 물어보시면 됩니다.
하지만 인공지능이 알려주는 코드는 언제나 그렇듯 어딘가 어색하고 한계가 있기에..
모르는 부분은 댓글 남겨주시면 성심성의껏 알려 드리겠습니다.
감사합니다.