aardio + Python 可視化快速開發桌面程序,一鍵生成獨立 EXE

網絡上大家分享的 aardio + Python 混合開發的文章很多,不得不說 aardio 與 Python 混合開發是真的簡單 !
 快速入門推薦幾個快速上手教程:《 aardio + Python 開發桌面軟件快速入門 》《 aardio 快速入門 - 語法速覽 》
在 aardio 中可直接創建 Python 工程:

aardio + Python 可視化快速開發桌面程序,一鍵生成獨立 EXE

文章插圖
aardio 可視化開發圖形界面非常方便,相關的教程、開源項目都很多,這里就不多說了 。
至于 aardio + Python 互調也非常簡單,示例:
import console;import py3; //導入 Python 模塊 。var itertools = py3.import("itertools")//調用 Python 函數,支持純 aardio 類型參數var permutations = itertools.permutations({"a","b","c"});//調用 Python 內置函數 listvar pyList = py3.list(permutations);//遍歷 Python 對象成員for( item in pyList.each() ){console.log(item); //像 aardio 對象一樣使用 Python 對象}console.pause();aardio 自帶的 Python 范例也非常多,請打開「 aardio 范例 > 調用其他語言 > Python 」 查看 。
 一鍵成獨立 EXE 文件純 aardio 程序可以方便地生成獨立 EXE 文件,不需要虛擬化,不需要釋放臨時文件 —— 這是因為 aardio 自帶的文件函數都自動兼容了 EXE 內嵌資源路徑 。 即使用到了一些第三方的 DLL 組件一般也可以自內存加載,即使是 .NET 程序集也可以方便地自內存加載 。
但是 Python 不能這樣搞,aardio + Python 生成的軟件就必須帶上 Python 解釋器,*.py 文件一般也是放在硬盤上 。
下面是我用 aardio + Python 范例工程生成 EXE 得到的文件:
aardio + Python 可視化快速開發桌面程序,一鍵生成獨立 EXE

文章插圖
上面的 PyApp.exe 需要帶上 /lib/ , /py/ 這幾個目錄才能運行 。當然,這里面已經自帶了綠色的 Python 運行時,用戶電腦不再需要安裝 Python。
但是很多用戶喜歡小輕快的獨立 EXE 文件 。我經常被問到這個問題,怎樣將 aardio + Python 開發的軟件轉換為獨立 EXE 。
其實用免費的虛擬化封包工具( 不需要額外釋放臨時文件 )  Enigma Virtual Box 就可以將上面的幾個文件轉換為獨立 EXE 文件 。我基于 Enigma Virtual Box 寫了一個擴展庫 process.vb,可以一鍵完成所有操作 。
新版 aardio 生成 EXE 后多了一個「轉換為獨立 EXE」按鈕 。
aardio + Python 可視化快速開發桌面程序,一鍵生成獨立 EXE

文章插圖
【aardio + Python 可視化快速開發桌面程序,一鍵生成獨立 EXE】點擊「轉換為獨立 EXE」以后生成了新的 PyApp.exe。然后我們可以刪掉其他的 /lib/, /py/ 目錄,因為 PyApp.exe  不再需要這些目錄了(已經封包到 PyApp.exe  內部了) 。
包含了 Python 運行時的  PyApp.exe 體積為 19MB,打個壓縮包其實只有 7 MB,這個體積相比 Electron 什么的算是非常小了 。
 process.vb 擴展庫Enigma Virtual Box 的主程序并沒有提供編程接口,也不支持命令行參數 。但提供了一個命令行工具 enigmavbconsole , 可以傳入 Enigma Virtual Box 生成的工程文件(*.evb)路徑并生成獨立 EXE 文件 。
而 evb 工程文件實際上是一個 XML 文件 。Enigma Virtual Box 界面上如果拖入包含中文的路徑,生成的 evb 會出現亂碼 。但實際上 evb 支持 Unicode / UTF-8 編碼 , 如果我們用程序生成 evb 文件,并存為 UTF-8 編碼,enigmavbconsole 是可以正常處理的 。 但如果在 Enigma Virtual Box 界面上再次打開這個 evb 文件,界面上又亂碼了 。
這個 evb 的內容其實也有些復雜,但好在 aardio 寫程序速度快,要不了幾句代碼這個 process.evb 擴展庫就寫好了 。
來個簡單的調用例子:
import console;import process.evb.project;import ide;//創建封包工程var evbProject = process.evb.project()//設置啟動 EXEevbProject.main = ide.getPublishPath();//設置要生成的獨立 EXEevbProject.output = io.tmpname(,".dat");//添加發布目錄下的所有文件evbProject.addSubFile(ide.getPublisDir());//生成工程evbProject.generate("/app.evb");//生成獨立 EXEimport process.evb;var evb = process.evb("/app.evb")evb.logResponse();//清理臨時文件io.remove("/app.evb");fsys.move(evbProject.output,ide.getPublishPath());既然都玩到這個份上來 , 再隨手拖個界面吧:
aardio + Python 可視化快速開發桌面程序,一鍵生成獨立 EXE

文章插圖

    推薦閱讀