
Python
project TemplateMate 는 기존 수동으로 css, js 파일을 업데이트하면 생기는 오류를 최소화 하고자 만든 업데이트 자동화 시스템 툴.
파일에 적힌 주석 값에 따라 여러 폴더 중 매칭 되는 폴더에 자동 업데이트 되고, 기존 파일은 업로드 시점으로 파일명이 변경되어 자동 백업 되게 하였다.
추가로, 히스토리 관리도 파일 업로드 시점에 자동으로 엑셀에 기입 되게 하였다. 그 엑셀은 비개발팀에서도 확인 가능하도록…
프로젝트 기간: 09.24~9.26 (다른 업무 포함)
파이썬에 CustomTkinter 기본으로 두고 작업 진행
# 가상환경 D:\Python\python311\python.exe -m venv vTemplateMate # 패키지 설치 pip install customtkinter pip install tk pip install pyinstaller # 배포용 pip install pillow # 이미지용 pip install tkinterdnd2 # 드래그드랍용 pip install openpyxl # 엑셀처리 pip install pandas # 엑셀 히스토리 처리
스펙 파일로 만들어서 배포 하기
pyi-makespec --onefile --noconsole --icon=img/logo.ico main.py
명령어로 먼저 스펙파일을 만들어 준다.
그리고 파일을 열어서 이미지 경로 처리 해준다.
# -*- mode: python ; coding: utf-8 -*- import os, sys def resource_path(relative_path): """ PyInstaller 실행 환경 및 개발 환경 모두에서 리소스 경로 반환 """ if hasattr(sys, "_MEIPASS"): return os.path.join(sys._MEIPASS, relative_path) return os.path.join(os.path.abspath("."), relative_path) a = Analysis( ['main.py'], pathex=[], binaries=[], datas=[ ('img', 'img'), # ✅ img 폴더 포함됨 ], hiddenimports=[], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], noarchive=False, optimize=0, ) pyz = PYZ(a.pure) exe = EXE( pyz, a.scripts, [], exclude_binaries=True, name='TemplateMate', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, console=False, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, icon=['img\\logo.ico'], ) coll = COLLECT( exe, a.binaries, a.datas, strip=False, upx=True, upx_exclude=[], name='TemplateMate', )
그리고 배포 명령어는
pyinstaller main.spec
그러면 dist 폴더 안에 배포 파일이 생긴다.
매번 스펙파일 만들 때마다 느끼는 거지만.. 참 깔끔하게 한번에 안 만들어 지는..
스펙 파일 만들 때 크게 발생하는 이슈는 이미지 첨부할 때 에러가 있고~ 버전 관리할 때 에러가 생기고~~~
이번 프로젝트는 개발에서는 크게 이슈는 없었다. 오히려 기획 시점에서~ 최대한 사용자가 편하게 자동으로 하려면 어떻게 하면 좋을까에 대한 고민이 있었다.
이 비슷한 툴이 저번에 만들었던 [python/development] project Handy 설치 및 개발 완료 프로젝트 핸디 였었는데~ 저 때 너무 많은 정보를 보여주는 게 오히려 실제 사용에 더 불편함이 있었다.
그래서 이번엔 실 작업자가 아닌 백업 작업자가 모든 해당 내용을 몰라도 코드를 수정 후 오류 없이 업로드 되게, 그리고 히스토리로 그 기록이 실제 작업자에게 전달되게 하는 것에 초점을 두고 기획하였다.
그 방법으로 한 게, 업로드가 필요한 모든 파일에 data 관련 코드 값들을 미리 주석에 넣어두고 그 값에 따라 분류 업로드 되게 하였다. 그러면 사용자가 하나씩 선택하지 않아도 되는 편함과 백업 사용자가 실수로 잘 못 올리는 경우가 줄어들게 된다.
그리고 히스토리는 엑셀 파일로 결정하였는데, 아무래도 비 개발자분들인 다른 팀 분들에게 관련 데이터 전달에 가장 편했기에~ 엑셀로 기록, 공유가 필요하면 그 엑셀을 공유하기로 하였다.
장점은 수정된 내용을 하나씩 기록 후 수정했던 파일을 배포하였는데 ~ 그 과정이 줄어들어서 편하다는 피드백을 받았다.
일단 탭은 1개 프로젝트만 진행되게 하였고, 이후 탭 추가로 프로젝트마다 자동 업데이트 되도록 확장할 예정이다.
최대한 누르고~ 선택하고 하지 않고 그냥 파일 드래그 드랍되면 파일에 적힌 주석을 참고하여 자동 해당 폴더에 업로드 되고 히스토리 기록 되게 해서 최대한 편리성이 중점을 두었다.
히스토리는 특정 위치 엑셀에 값들이 자동 들어가게 된다.
그리고 덮기 전, 기존 파일은 #Bak 폴더 안에 지정된 경로를 자동으로 각각 만들어서
기존 파일명_업로드 날짜_시간으로 백업 파일을 만들어서 들어가게 해두었다.
아무래도 당일 여러 번 올릴 수 있으니 초 단위까지 해서 트러블을 줄였다.
customtkinter: https://customtkinter.tomschimansky.com/
다른 프로젝트들: https://pixiclue.com/tag/project/