<목적>
pyinstaller --one-file xxx.py 를 이용하여 하나의 exe파일로 배포하고자 한다.
xxx.py 코드 진행시 사전에 필요한 패키지들을 자동 설치하고 싶었다.
<리서치>
구글링해보니 --add-data를 이용하여 여러개의 파일을 추출되는 exe파일 안에 넣을 수 있었으며,
코드안에서 해당 파일들을 사용할 수 있었다. (이 부분을 적용하는데 애 먹음..)
※ - 파일추가
--add-data <SRC;DEST or SRC:DEST> |
프로그램 실행시 추가적으로 필요한 파일이 있을 경우 사용 소스파일과 경로 구분자는 윈도우 환경에서는 세미콜론(;), 유닉스 환경에서는 콜론(:)으로 구분한다 함 |
출처: https://taedi.net/11 [Taedi's Log]
<예시코드>
import os
import sys
os.chdir(sys._MEIPASS)
os.system('included\\text.txt')
pyinstaller command
pyinstaller --onefile --nowindow --add-data text.txt;included winprint.py --distpath .
<실제 수행 내용>
1. 패키지 local download
sudo apt-get install --download-only adb
2. pyinstaller 연관 패키지 add-data로 포함하여 패키지 배포
pyinstaller --onefile --add-data "*deb:included/" xxx.py
3. 코드 안에서 위 --add-data 파일 활용
import os, sys
os.chdir(sys._MEIPASS)
os.system('sudo dpkg -i included/*.deb > /dev/null')