2013-12-16 65 views
10

現在我正在使用Pyinstaller。 我有一個腳本,從IMG文件夾獲取圖像..Pyinstaller:生成-exe文件+文件夾(在--onefile模式下)

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

我的腳本生成的.exe是

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

的問題是,只生成.exe文件,但整個文件夾/ 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作爲編輯器。

1.如果您的Py腳本需要某些文件,圖標和圖像,則必須包含一個從項目文件夾(開發中)檢索這些文件或者形成臨時數據文件夾(部署時)的函數。這個腳本必須在你的代碼中完全放在你放置親屬路徑的部分以獲取資源。請嚴格遵循本指南:https://stackoverflow.com/a/13790741

2.在上面的代碼之後,您必須首次執行pyinstaller命令-as我在我的問題發佈後發佈。現在

3,打開命令PYInstaller的執行(位於PYinstaller /)後生成您的.spec文件,並添加後,「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

相關問題