posted by 블르샤이닝 2023. 3. 28. 11:02
728x90

출처 : https://howtoworld.tistory.com/39

 

python 코드를 exe 배포파일 만들때는 pyinstaller를 사용합니다만,

옵션들을 직접 알고 타이핑해야 하는 불편함이 있었습니다.

 

그런데, 오늘..

출처: https://iamaman.tistory.com/3289 [남성의 MATLAB LOG]

님의 덕분에 좋은 방법을 찾게 되었습니다.

 

아래와 같이 anaconda prompt에서 pip install을 통해서 auto-py-to-exe를 설치해 줍니다.

그다음, auto-py-to-exe를 실행시키면 됩니다.

그러면, 다음과 같이 팝업 윈도우 창에서 실행파일 만드는 명령을 줄 수 있습니다.

약 10분 후에 정상적으로 완료되었다는 메세지가 보입니다.

이번에는 exe파일이 정상적으로 실행될 수 있을까요? 

지금까지 계속 실패하고 있거든요. exe파일 실행해도 에러 메세지도 없이 실행이 안되었거든요...

 

OPEN OUTPUT FOLDER를 눌러서 가니,

main.exe파일이 정상적으로 만들어져 있습니다. 실행을 해 볼까요?

에고.. 역시 또 실패입니다. numpy.random.common 모듈을 못찾았다네요.. 흠..

---------------------------------------------------------------

 

위에 블로그를 보고 auto-py-to-exe를 설치한 후 실행해보니 편하네

exe  만들기는 편하게 만들수 있을듯하다

 

잘된다. 다만 ui 파일에 대해서 추가가 안되서 add Files로 했는데도 없다고 에러 뜨기에 exe 생성경로에 ui 파일도 같이 넣어주니 되네...음 이걸 어떻게 합쳐야 하나

 

------------------------------------------------------------

ui  파일에 대한 문제점 해결했다. 아래 블로그 보고 참고해서 진행

 

출처 : https://all-share-source-code.tistory.com/51

 

python - PyQt5 .exe파일 만들시 ui파일 불러오기 오류 해결 방법

one directory로 할시 정상작동하지만 one file로 할시 *.ui 파일이 계속 없다고 합니다... (아마 one file하면 exe파일안에 패키지화 되어 들어가기 때문인거 같습니다.. 그래서 _MEIPASS를 해줘야 되는거 같

all-share-source-code.tistory.com

 

 

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-dir

728x90

'개발 > 파이썬' 카테고리의 다른 글

프로그램 에 사용할 무료 이미지  (0) 2023.08.21
파이썬 qt 이미지 파일 삽입  (0) 2023.08.19
파이썬 qt 디자인 시작 - 1  (0) 2023.03.11
snt 파일 열기  (0) 2023.01.25
파이썬 등 코딩하기 좋은 사이트  (0) 2022.03.15