본문 바로가기
IT/python

pyinstaller --one-file --add-data 활용하기

by shcho7832 2022. 4. 11.

<목적>

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]


 

<예시코드>

출처: https://stackoverflow.com/questions/51060894/adding-a-data-file-in-pyinstaller-using-the-onefile-option/51061279#51061279

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')