2012-03-02 43 views
13

要求是使應用程序可移植,意味着沒有安裝程序。我看着py2exe,我怕我需要運行安裝,如果我想在Windows下運行它。如何製作便攜式python桌面應用程序?

所以我的問題是,我可以做一個可移植的Python桌面應用程序沒有任何安裝(所有的依賴和庫被打包),從USB/CD拖動將運行它?

(這很重要,因爲它是一個頭痛的用戶安裝C++運行時庫...)

感謝。

+0

您說讓用戶安裝C++運行時庫令人頭疼......爲什麼不包含它在你的程序的安裝程序中?我使用Inno Setup安裝了py2exe打包Python軟件。我只需要安裝程序使用'/ qb'標誌運行Visual C++運行時可再發行組件,以便用戶不必執行任何操作。 – 2012-03-02 20:21:33

+0

@ Series8217謝謝。我想我可以做到這一點,但重點是沒有安裝程序;如果它可以攜帶,很好! – CppLearner 2012-03-02 20:23:44

回答

9

您可以使用此方法py2exehttp://www.py2exe.org/index.cgi/SingleFileExecutable

基本上,你用NSIS到所有需要的文件和文件夾打包成一個單一的可執行文件。運行它時,所需文件將展開到一個臨時目錄,可執行文件將運行,當它退出時,會自動刪除臨時文件。

還有一個與py2exe自帶的例子,它使用Inno Setup而不是NSIS來實現相同的結果。它已安裝到​​。

+0

謝謝。我讀過它,如果我錯了,請更正:因此,在編譯安裝程序後,我可以將整個文件夾複製到另一臺計算機。運行可執行文件,它會在tmp文件夾中生成適當的文件,如dll,一旦用戶關閉應用程序,該文件夾就會被刪除。我的應用程序需要持久性,因爲我們有一個XML數據庫,所以我們不想破壞記錄。我如何知道在tmp中創建了什麼?謝謝。 – CppLearner 2012-03-02 20:19:26

+0

@CppLearner正確。編譯「安裝程序」後,需要移至其他計算機的唯一可執行文件就是「安裝程序」。當您運行該可執行文件時,它將解壓縮其內容(應用程序exe文件和所需的DLL文件等),運行該應用程序,並在應用程序退出時刪除該臨時文件夾。您可以通過編輯示例NSIS腳本來控制行爲。 – 2012-03-02 20:27:34

+1

@CppLearner如果你想持久化數據,將它存儲在它應該去的地方......也許'%homepath%\ AppData \ MyXMLDB'或類似的東西。然後應用程序總能找到它,而不管你從哪裏執行它。 – 2012-03-02 20:28:16

3

您也可以叉Portable Python並修改以包含您所需的應用程序和庫。它可以在沒有安裝的情況下從任何驅動器/網絡位置運行,並且您可以選擇是否希望基於2.xx或3.xx的Python核心