파이썬을 활용해서 프로그램을 만들때 실행파일인 EXE로 만들 수 있습니다.
이 때 필요한 패키지는 pyinstaller인데요.
pyinstaller
PyInstaller는 파이썬 스크립트를 다양한 운영 체제의 실행 파일로 변환 할 수 있는 패키지 입니다.
Python 코드를 실행하는 데 필요한 모든 종속성과 라이브러리를 단일 파일로 만들수 있게
도와주는데요.
먼저 설치부터 진행하겠습니다.
pip install pyinstaller
여기까지 진행하면 파이썬 exe 실행파일 만들기는 모두 완료되었습니다.
이제 간단하게 파이썬 프로그램을 exe로 만들어 보겠습니다.
파이썬 exe 프로그램 만들기
간단한 명령어로 만들 수 있는데요.
세부 명령어는 홈페이지를 참고하시면 되고,
저의 경우 하나의 파일로 만드는 -F 옵션만 입력하였습니다.
pyinstaller -F test1.py
따로 이름 옵션을 주지 않았기 때문에, dist 폴더에 파일이 생성됩니다.
그리고 파일 추가를 위해서는 add-data 옵션을 사용하는데요.
예를 들어 csv 같은 파일 첨부시에는 add-data 옵션을 사용합니다.
–add-data : 파일 추가
등이 있는데 여기서 특히 –add-data는 데이터 유형에 따라 DEST가 다르게 설정됩니다.
그리고 윈도우에서는 세미콜론을 유닉스에서는 콜론으로 구분합니다.
Single file: “test.csv:.” -> DEST = .
이걸 윈도우에서 한다면 “test.csv;,” 로 변경해주셔야 합니다.
multiple files: “images/*.png:sfx” -> DEST = sfx
folder: “images:data” -> DEST = data
그리고 이 때 파일의 폴더는 임시 파일에 저장되는데요.
pyinstaller 가 실행되는 방식에 대한 이해가 선행 되어야 합니다.
기본적으로 pyinstaller 로 만들어진 실행파일은 최초 exe 실행시에 실행에 필요한 모든 파일을
임시폴더에 풀어낸 후에 실행되게 됩니다. 하지만 이때 이 임시폴더는 실행시마다 경로가
달라지게 됩니다. 그리고 그 폴더를 우리가 접근할 수 있게 하기 위해
sys._MEIPASS 라는 변수가 선언되어 있습니다.
이를 아래처럼 설정해도 되구요.
def resource_path(relative_path):
try:
# PyInstaller에 의해 임시폴더에서 실행될 경우 임시폴더로 접근하는 함수
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
아니면 직접적으로 test_path에 지정해주셔도 됩니다.
try:
# sys.MEIPASS is temp directory for pyinstaller
test_path = os.path.join(getattr(sys, '_MEIPASS'), "test.csv")
except:
test_path = os.path.join(os.path.abspath("."), "test.csv")
보다 자세한 사용법은 아래 설명서를 참고해보세요.
https://pyinstaller.org/en/stable/spec-files.html?highlight=–add-data#adding-data-files