2013-12-16 3 views
10

이제 Pyinstaller로 작업하고 있습니다. 나는 .EXE 문제는/.exe 파일 만 전체 폴더를 생성한다는 것입니다Pyinstaller : generate -exe file + folder (--onefile 모드에서)

pyinstaller.py --windowed --noconsole --clean --onefile maint.py 

입니다 생성하는 IMG 폴더에서 이미지를 내려면 스크립트 ..

/python 
|----/img 
|----|----icon1.ico 
|----|----icon2.ico 
|----maint.py 

내 스크립트가 img가 생략되었습니다.

질문 : .exe 파일 +/img 폴더를 자동으로 가져 오기 위해 이전 줄에 추가 구문을 사용해야합니까?

업데이트 2013년 12월 18일

내 말은 : pyinstaller.py 스크립트의 실행 후, 모든 인수, 나는/DIST 폴더에 참조해야 : .exe 파일을 +은/내 응용 프로그램에 대한 내가 가진 모든 아이콘 또는 비트 맵 파일과의 img 폴더

감사

+0

".exe 파일 +/img 폴더를 자동으로 얻으려면"무엇을 의미합니까? – Blender

+0

일단 컴파일 프로세스가 성공하면 그 폴더를'/ dist'로 복사하십시오. – poke

+0

@Blender 뜻 : 그 pyinstaller.py 스크립트의 실행 후, 모든 인수와 함께,/dist 폴더에서 볼 수 있어야합니다 : 내 응용 프로그램에 대한 모든 아이콘 또는 비트 맵 파일과 함께 .exe 파일 +/img 폴더 – MigRome

답변

12

업데이트 2013년 12월 19일

마침내 얻었습니다!

0. 나는 PYInstaller + Python 2.67의 현재 버전을 Sublime Text with Editor로 사용하고 있습니다.

1. Py 스크립트에 일부 파일, 아이콘, 이미지가 필요한 경우 프로젝트 폴더 (개발 중)에서 이러한 파일을 검색하거나 임시 데이터 폴더 (배포시)를 구성하는 함수를 포함해야합니다. 이 스크립트는 자원을 확보하기 위해 친척 경로를 넣은 부분의 코드에 정확히 있어야합니다. 다음 지침을 정확히 따르십시오 : https://stackoverflow.com/a/13790741

2. 이전 코드를 실행 한 후에는 pyinstaller 명령을 처음 실행해야합니다.

3. 이제 당신을 .spec (pyInstaller 중에 /에 위치) pyInstaller 중에 실행 한 후 생성 된 파일 명령을 열고 "a.binaries"줄 끝에서, 추가, EXE 파일에 다음 줄() 함수 :

내가 가져온 거에요이 폴더 (통지의 모든 내용을 포함 할 것을 의미 을 : 트리 (...) 함수의 첫 번째 인수가 외부 넣을 폴더 있음을 알아
exe = EXE(pyz, 
      a.scripts, 
      a.binaries, 
      Tree('..\\python\\images', prefix='images\\'), 
.... 

유지 AppStart.py 파일에 대한 상대 경로) 을 내 .EXE 파일의 파일 컨테이너에 저장합니다.

4. 후 그 개조에 pyInstaller 중에 명령을 다시 실행하지만,이 경우 내을 .spec 파일을 가리키는 :

pyinstaller.py --windowed --noconsole --clean --onefile AppStart\AppStart.spec 

그리고 마지막으로 내 응용 프로그램을 복사 할 필요없이 실행 파일로 실행 할 수 있으며, 누군가 언급 한대로 모든 외부 폴더를 붙여 넣으십시오. 그러나 언제나처럼 나는 실용적인 방법으로 생각합니다.

지원해 주셔서 감사합니다.

+1

이것은 전체 디렉토리를 포함하는 가장 신뢰할 수있는 방법입니다! 사람들이이 옵션을 사용하지 않고 무엇을하는지보십시오. http://stackoverflow.com/a/12033695/2230844 – denfromufa

+0

답변은 초기 질문에 대답하지 않습니다. pyinstaller에게 번들에 파일이나 디렉토리를 추가하는 대신 dist 디렉토리에있는 파일이나 디렉토리를 복사하도록 지시 할 방법이 없습니까? – bitek

관련 문제