在過去的幾年裏,我用python編寫了一個很好的小程序,現在我想分發它,但是我的第一次嘗試沒有遇到太多的熱情,因爲許多潛在的用戶不喜歡下載和安裝python以及運行我的應用程序所需的所有依賴關係的想法。凍結每個操作系統的python腳本
我環顧四周尋找一種解決方案,將代碼編譯成易於運行的東西,但我對所發現的內容並不滿意。
我對凍結應用程序而不真正編譯它的想法沒有任何問題。這只是意味着最終用戶將等待幾秒鐘來下載應用程序,並在他/她的硬盤上佔用更多空間。
我的問題是找到一種方法來將所有應用程序打包到每個操作系統的可執行文件中(比如說,Windows,Mac,Linux--對於每個操作系統顯然是不同的可執行文件),而無需安裝虛擬機或葡萄酒或類似的選項。我強烈懷疑這是可能的,因爲我看到一堆ren'py遊戲打包完全符合我想打包應用程序的方式,但是我不知道如何獲得與我的程序相同的結果。
示意圖中,我的應用程序需要一個控制檯才能運行,幷包含一些自制包,numpy和matplotlib。它也有一個系統支持多種語言,動態地包括一個語言文件,覆蓋以前的設置:
exec('from lang.%s import lang' % language)
我懷疑這可能會產生一些問題。最後,該程序需要幾個文件夾來保存其設置,日誌等在第一次運行,所以這些也應該包括在內。我的電腦運行ubuntu mate 16.10(x64),python版本是2.7,但是將來我打算將它翻譯成python 3.所創建的可執行文件可以是單個重文件,其中包含幾乎所有需要的文件或輕量文件,其他所有文件都可以在附近的文件夾中找到;我沒有對一種解決方案或其他解決方案的偏好。
我知道這個問題不時出現,可能已經回答了,但這種問題的最後一次發現可以追溯到2014年,如果我們考慮如何快速地在這個領域的變化。
編輯:既然有似乎是我提出的,我能想到的設置了一些仿真器/包裝/兼容層/不管運行冷凍不同操作系統的條件沒有解決辦法,但我不知道該怎麼辦。我在這裏和那裏看到,葡萄酒並不總是正常工作,並找不到任何東西在Linux上爲Mac編譯。據我瞭解,程序不需要32/64位系統的不同編譯,但是如果有一種簡單的方法來編譯每種可能性,它都會很好。虛擬機仍然不行,現在我的磁盤上沒有空間來建立兩個或兩個以上的虛擬機(這是ssd磁盤的巨大缺點......),更不用說支付操作系統許可證了每年使用幾次來編譯一個免費軟件。
打包您的程序所需的所有文件/文件夾應該不成問題,大多數工具都支持該功能。我認爲最大的障礙是交叉編譯 - 據我所知,只能爲您當前使用的平臺生成可執行文件,因此您必須在Windows上凍結以獲取Windows .exe並凍結到Linux得到一個linux可執行文件等 –
@Rawing如果我理解正確,ren'py似乎交叉編譯python沒有任何問題。我沒有可能爲每種可能的環境運行虛擬機,所以如果有另一種解決方案,它會很棒。 – GRB
如果您真的堅持不擁有虛擬機,您可以使用持續集成服務在各種操作系統中運行您的打包程序。 –