작성
·
4.7K
답변 1
0
일단 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)
따라서 위의 예시처럼 함수를 하나 작성해서 이미지에 접근해보시는것을 추천합니다.
PS. 이미지가 exe 안에 포함이 안된 경우라면 --add-data 옵션을 사용해보시는것도 추천합니다. 물론 --add-data 옵션을 사용했다하더라도 위의 함수를 사용해야 합니다.
https://pyinstaller.readthedocs.io/en/stable/spec-files.html?highlight=--add-data#adding-data-files