2017-10-18 163 views
2

我想分發我的Python代碼運行Windows 7 +的機器上。它由幾個主文件爲cprofiles_lmfit.py的.py文件和一個文件cprofiles.ui組成,用於描述文檔的GUI和.pdf。需要幫助編譯蟒pyinstaller

我有一個硬時間(參見build a .exe for Windows from a python 3 script importing theano with pyinstaller例如),但最終取得使用pyinstaller使用命令行適當的二進制:

pyinstaller --noupx --onefile --add-data="cprofiles.ui;." cprofiles_lmfit.py 

在上述鏈接中,二進制描述的theano模塊的問題旁仍然有幾個問題:

  • 該.exe是220MB大;我想減小尺寸。

  • 當運行.exe控制檯打開並等待~20秒打開GUI之前。一旦GUI被打開,關閉控制檯就會終止GUI ...我想避開這個控制檯並跳過〜20s。

  • ui文件必須與exe一起發佈(在同一目錄中);我曾希望這不應該是'添加數據'選項的情況。我想包括它。

  • python環境的'Library/plugin'目錄下的'platforms'目錄也必須和exe一起發佈。否則,在運行exe時出現錯誤消息「此應用程序無法啓動,因爲它無法找到qt平臺插件窗口」(但在構建時沒有來自pyinstaller的錯誤消息!)。我想擺脫這個「平臺」遊戲。

你知道如何解決這些問題嗎?


更新2017年11月28日: 沒人?如果你能爲這些要點貢獻一點,請給我一點線索。

回答

1

我想我有更好的解決方案:使用nsis與pyinstaller結合使用。

這裏更詳細的答案:

  1. 該文件是一個大的,因爲它包含了完整的Python環境。我認爲除了創建一個包含較少文件的虛擬環境以及在代碼中使用較少的軟件包之外,您可以做的事情不多。
  2. 運行該exe需要很長時間,因爲您選擇了--onefile選項。因此,它將解壓縮exe文件,將其保存到臨時目錄中,然後運行腳本。當使用--onefile時,它實際上不是一個真正的可執行文件,而只是一個zip文件,它解壓並自動啓動。更好的選擇可能是:
  3. (和4.)。不要使用--onefile選項,只需使用pyinstaller將其打包,然後使用nsis在其上創建腳本。這樣用戶就可以運行安裝程序,安裝程序將打包放入nsis腳本的所有文件(包括由pyinstaller創建的所有文件)以及所需的任何其他文件。將會有一個很好的安裝界面,它也會創建一個.exe的快捷方式。