개발로그/Python
pyinstaller 빌드 한 번 해보자... 준비사항
그리너리디밸로퍼
2025. 3. 24. 18:41
✅ 📦 1단계: 빌드 준비 체크리스트
1️⃣ 불필요한 테스트/개발 코드 정리
- testcodes/, __pycache__/, 임시 로그파일 제거
- 미사용된 legacy 함수 삭제 (이미 resolve_drive_path 정리처럼 진행하셨음 👍)
2️⃣ 로컬 캐시 디렉토리 초기화
- cache/drive_audio/, cache/tts_audio/ 등 초기상태로 두거나 .gitignore 등록
3️⃣ .env 또는 config.ini로 민감정보 분리 (필요시)
- 구글 API 키, Telegram 토큰 등
4️⃣ requirements.txt 최종 정리
pip freeze > requirements.txt
그 외,
경로처리하는 부분이 아래처럼 되어있다면, 에러가 날 확률이 높다.
os.path.dirname(__file__)
import sys
import os
def get_resource_path(relative_path):
"""패키징된 exe 환경에서도 제대로 경로 반환하는 함수"""
if hasattr(sys, '_MEIPASS'):
# PyInstaller 빌드된 exe 환경
base_path = sys._MEIPASS
else:
# 개발 환경
base_path = os.path.dirname(os.path.abspath(__file__))
return os.path.join(base_path, relative_path)
이렇게 작성해야함.
이미 작성된 코드들에서는 이렇게 사용.
from utils import get_resource_path
config_path = get_resource_path("config/config.yaml")
sound_path = get_resource_path("sounds/beep.mp3")
✅ 🛠️ 2단계: 실행 빌드 스크립트 정비
1️⃣ start_radio.py 내 main entry 재점검
- if __name__ == "__main__": 블록 포함 여부 확인
- CLI 실행 가능하게 되어 있는지
2️⃣ PyInstaller 빌드 설정
이미 start_radio.spec 있다면 아래 커맨드로 빌드:
pyinstaller start_radio.spec
💡 또는 minimal 빌드 테스트용:
pyinstaller --onefile start_radio.py
폴더를 추가해야한다면, --add-data "파일경로"
여기서 삽질을 좀 많이 해야하더라... 자세한건 다음포스팅..
✅ 💬 3단계: 배포/운영 자동화 준비
1️⃣ run.bat or run.sh 배치 스크립트 작성 (자동 시작용)
bat
복사편집
@echo off echo Starting Buffer Radio... radioEnv\Scripts\activate python start_radio.py
2️⃣ 로그 자동 백업 + 순환 시스템
- 로그 디렉토리 logs/가 너무 커지지 않도록 순환 시스템 (e.g. RotatingFileHandler)
✅ 🔐 4단계: 운영 환경 테스트 및 최종 검수
- 다양한 버퍼 시트에서 오류 없이 동작하는지
- 24시간 무중단 테스트 (시보 → 루프 → 캐시 재생)
- Google Drive API 한도 초과 대비 (잘 되고 있음 👍)
- SSL/네트워크 불안정 상황 복구 확인
728x90