2013-06-20 3 views
0

pyinstaller를 사용하여 데이터 파일 (png 파일 및 pot 파일)을로드해야하는 응용 프로그램에서 작업 중이며 temp 폴더의 파일을 추적 중이므로 데이터 파일이 추가되지 않습니다. 어떤 이유로 임시 폴더.pyinstaller2.0을 사용하여 데이터 파일로드

:

a = Analysis(['mks_controller.py'], 
      pathex=['C:\\pyinstaller-2.0\\pyinstaller-2.0'], 
      hiddenimports=[], 
      hookspath=None) 
a.datas += [('presentation.potx','C:\\pyinstaller-2.0\\pyinstaller-2.0\\bbpresentation.potx','DATA'),('splat.png','C:\\pyinstaller-2.0\\pyinstaller-2.0\\splat.png', 'DATA'),('logo.png','C:\\pyinstaller-2.0\\pyinstaller-2.0\\logo.png','DATA')] 
pyz = PYZ(a.pure) 

나는 다음과 같은 두 가지 명령을 사용하여 EXE를 구축 : 나는 또한 사양 파일을 수정

import os, sys 

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 = sys._MEIPASS 
    except Exception: 
     base_path = os.path.abspath(".") 

    return os.path.join(base_path, relative_path) 

: 나는 다음과 같다 디렉토리를 추적하는 작은 모듈을 만든

pyinstaller.py --onefile filename.py 
pyinstaller.py --onefile filename.spec 

이고 데이터 파일이 디렉토리에로드되지 않습니다. 또한이 디렉토리에있는 모든 파일을 보여주는 로그를 실행하려고 시도했지만 데이터 파일은 표시되지 않습니다.

http://imgur.com/delete/qIff0zZT2Y4ZdKT

나는 파이썬 2.7과 2.0 pyInstaller 중에을 사용하고 있습니다 : 여기의 스크린 샷이다. 문제가 무엇인지 누구나 알고 있습니까? 미리 감사드립니다!

+0

--onefile을 수행하고 --onefile; 이외의 것을 얻지는 않는다고 생각합니다. 수동으로 같은 위치에 리소스를 넣고 아마도 우편이나 뭔가를 만들면됩니다. (틀릴 수도 있습니다.) .) –

답변

0

최근 학습 곡선을 통과 한 멍청한 사람의 제안. 오류를 줄 수있는 많은 것들이 있습니다. 먼저 데이터 파일을 포함하지 않고 exe 파일을 작업하게하십시오 ...

1) Windows를 사용하고 있습니까? 명령을 실행하기 위해 배치 파일을 만들었습니다. (겉으로보기에는 수백 번 작동 할 때까지) '일시 중지'는 오류 메시지를보기 위해 창을 열어 놓았습니다.

pyinstaller.py --onedir filename.py
pause

2) 나는 --onedir 사용. 어쨌든 한 파일은 모든 리소스를 언팩하는 데 시간이 걸리므로 테스트하는 동안 시간이 낭비됩니다. 테스트를 위해 모든 데이터 파일을 드라이브의 별도 디렉토리에 저장하고 프로그램에서 절대 경로를 사용했습니다. 이것들은 dist 디렉토리에 수동으로 포함될 수 있으며 상대 경로는 나중에 onefile이 작동하는 데 문제가있는 경우 나중에 프로그램에 따라 적절하게 설정됩니다. spec 파일을 편집하고 모든 것을 onefile에 압축하는 것에 대해 걱정하기 전에 다른 오류를 해결하십시오.

3) 데이터 파일을 포함하지 않았기 때문에 spec 파일을 편집하는 것에 대해 걱정하지 않았습니다!

4) 실행 파일을 배치 파일을 통해 실행했기 때문에 ('멍청한 놈'이라기 때문에 반복적으로 실행해야 했음) 다시 '일시 중지'명령을 사용하여 창을 열어 놓고 오류를 읽을 수 있습니다.

5) 마지막으로 오류를 수정하려면 latest pyinstaller development code ('pythoncom'오류 수정)으로 전환해야했습니다. dev 코드는 디버깅에 도움이되는 것처럼 보입니다. 또한 모듈을 (내 경우에는 pyproj에서) 최신 빌드로 업데이트해야했습니다. 설치된 모듈로 오류를 수정하기 위해 가장 먼저해야 할 일은 업데이트하는 것입니다. 다양한 모듈 유지 관리자는 pyinstaller로 인해 발생하는 문제를 알고있을 수 있습니다.