[연구 자동화 #22] 나만의 연구 도구 배포하기: 파이썬 코드를 클릭 한 번으로 실행되는 .exe 파일로 만들기
여러분이 만든 자동화 도구가 연구실의 '공식 도구'가 되기 위해서는 접근성이 좋아야 합니다. 검은색 터미널 창을 열고 명령어를 입력하는 대신, 바탕화면에 있는 아이콘을 더블클릭해서 실행하는 것이 훨씬 직관적이죠. 파이썬의 PyInstaller 라이브러리를 사용하면 코드와 필요한 환경을 하나의 파일로 꽁꽁 싸맬 수 있습니다.
1. 배포의 마법사: PyInstaller
PyInstaller는 파이썬 코드뿐만 아니라 그 코드가 돌아가는 데 필요한 인터프리터, 라이브러리들을 통째로 묶어서 하나의 실행 파일로 만들어주는 도구입니다.
설치: 터미널에서
pip install pyinstaller를 입력하세요.특징: 상대방의 컴퓨터에 파이썬이 설치되어 있지 않아도 프로그램이 작동합니다.
2. 실전: 실행 파일 만들기
만드는 법은 의외로 간단합니다. 터미널에서 해당 파일이 있는 폴더로 이동한 뒤 아래 명령어를 입력하기만 하면 됩니다.
pyinstaller --onefile --noconsole my_research_tool.py
--onefile: 여러 개의 파일을 생성하지 않고, 깔끔하게 딱 하나의
.exe파일만 만듭니다. (가장 추천하는 방식입니다.)--noconsole: 실행할 때 검은색 콘솔 창이 뜨지 않게 합니다. 만약 16편에서 배운 Streamlit이 아닌, 일반적인 배경 작업이나 GUI 프로그램이라면 이 옵션이 유용합니다.
결과 확인: 명령어가 끝나면
dist라는 폴더가 생기고, 그 안에 여러분의 이름이 담긴 실행 파일이 들어있습니다.
3. [주의] 외부 파일(데이터, 이미지) 경로 문제 해결
자동화 프로그램이 외부 엑셀 파일이나 20편에서 다룬 이미지 등을 불러온다면, 실행 파일로 만들었을 때 "파일을 찾을 수 없다"는 에러가 자주 발생합니다.
실행 파일 내부의 임시 경로와 실제 작업 경로가 다르기 때문인데, 이를 방지하려면 코드 상단에 경로를 동적으로 인식하는 로직을 추가해야 합니다.
import os
import sys
def resource_path(relative_path):
""" 실행 파일 내부의 리소스 경로를 반환합니다. """
base_path = getattr(sys, '_MEIPASS', os.path.abspath("."))
return os.path.join(base_path, relative_path)
# 파일 불러올 때 적용
data_path = resource_path("my_template.xlsx")
4. 동료들에게 생색내기 (배포의 미학)
이제 완성된 파일을 연구실 공용 드라이브나 메신저로 전달해 보세요.
효율성: 팀원들이 수동으로 하던 단순 노동 시간을 줄여줌으로써 팀 전체의 연구 속도가 빨라집니다.
신뢰성: 누구나 동일한 코드로 분석하게 되므로, 사람마다 결과가 달라지는 휴먼 에러를 방지할 수 있습니다.
전문성: "파이썬 좀 다루는 연구원"에서 "연구 프로세스를 설계하고 도구를 보급하는 엔지니어급 연구원"으로 인정받게 됩니다.
5. 마치며: 도구는 쓰일 때 가치가 있습니다
아무리 훌륭한 알고리즘도 내 컴퓨터 안에서만 잠자고 있다면 그 가치는 제한적입니다. 내가 만든 결과물을 타인이 쉽고 편리하게 사용할 수 있도록 배려하는 것 또한 연구자가 갖춰야 할 중요한 덕목 중 하나입니다.
여러분의 코드가 실행 파일이 되어 동료들의 모니터 위에서 돌아가는 순간, 여러분의 연구실은 진정한 의미의 '디지털 트랜스포메이션'을 이룬 것입니다.
## 핵심 요약
PyInstaller를 활용하면 파이썬이 없는 환경에서도 작동하는 단독 실행 파일(.exe)을 생성할 수 있습니다.
--onefile 옵션을 사용해 배포가 용이한 단일 파일을 만들고, 경로 인식 로직을 통해 리소스 에러를 방지합니다.
코드 배포는 연구실 내 분석 프로세스를 표준화하고 협업 효율을 극대화하는 가장 강력한 방법입니다.
## 다음 편 예고
지금까지 22편에 걸쳐 파이썬 연구 자동화의 '거의 모든 것'을 훑어보았습니다. 23편에서는 [특별 부록: 연구원의 시간을 2배로 늘려주는 윈도우/맥 파이썬 환경 설정 꿀팁 모음]을 통해 더 쾌적한 코딩 환경을 구축하는 노하우를 공개합니다.
## 소통 질문
여러분이 만든 프로그램을 가장 먼저 보여주고 싶은 동료는 누구인가요? 그 프로그램이 동료의 어떤 고충(Pain Point)을 해결해 줄 수 있을까요? 댓글로 자유롭게 들려주세요!
댓글
댓글 쓰기