본문 바로가기
개발로그/Python

pyinstaller 빌드 한 번 해보자... 준비사항

by 그리너리디밸로퍼 2025. 3. 24.

✅ 📦 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

댓글