공유 블로그

one directory로 할시 정상작동하지만

one file로 할시 *.ui 파일이 계속 없다고 합니다...

(아마 one file하면 exe파일안에 패키지화 되어 들어가기 때문인거 같습니다.. 그래서 _MEIPASS를 해줘야 되는거 같습니다..)

 

해결방법은 간단합니다.

 

해결방법

def resource_path(relative_path): 
    """ Get absolute path to resource, works for dev and for PyInstaller """ 
    try:
        # PyInstaller creates a temp folder and stores path in _MEIPASS
        base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__))) 
    except Exception:
        base_path = os.path.abspath(".")
    
    return os.path.join(base_path,'자신의 GUI 폴더', relative_path)

2022/09/17 업데이트

import os
import sys

# .exe파일로 만들시 필요
def resource_path(*relative_Path_AND_File):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    try:
        # PyInstaller creates a temp folder and stores path in _MEIPASS
        base_path = getattr(
            sys,
            '_MEIPASS',
            os.path.dirname(os.path.abspath(__file__))
        )
    except Exception:
        base_path = os.path.abspath(".")

    return os.path.join(base_path, *relative_Path_AND_File)

사용법

2022/09/17 업데이트 개선  코드사용법

함수 복붙해서 이미지와 같이 loadUi 한후

다시 .exe파일 만들어서 실행하면 해결 됩니다.

(참고 : 함수에 '자신의 GUI 폴더'는 변경하셔야 합니다..)

 

추가내용

1. class 안에 넣을시 self 추가 해주시고 사용할때도 self.resource_path(내용) 으로 사용하셔야 합니다.

 

2. 위에 사용법 따로 파일을 만들어서 import 한다음 사용한거라 저렇게 사용해도 무방합니다.

                                    (하지만 이 방법을 사용시 꼭 import한 하위 디렉터리 안에 있어야됨)

 

 

출처 : https://stackoverflow.com/questions/37888581/pyinstaller-ui-files-filenotfounderror-errno-2-no-such-file-or-directory

공유하기

facebook twitter kakaoTalk naver band kakaostory Copy URL