1. 程式人生 > >ubuntu下使用pyinstaller將python檔案打包成exe(py檔案中含有keras框架的程式碼)

ubuntu下使用pyinstaller將python檔案打包成exe(py檔案中含有keras框架的程式碼)

一 使用工具

pyinstaller, 在ubuntu上安裝pyinstaller非常的簡單,直接使用下面的命令即可

pip install pyinstaller

注意:推薦大家使用python3.0及以上的python版本(好像python3.6使用pyinstaller也存在一些問題),因為使用python2.7下的pyinstaller在封裝的時候會提示缺失各種包等問題,然而直接使用python3.5下的pyinstaller進行封裝就非常的流暢。

二 打包的方法

進入到需要打包的py檔案的目錄下,在命令列中執行:

pyinstaller 檔名.py(會生成三個資料夾,有用的時dist檔案下,在該資料夾下有一個和py檔案同名的exe檔案,就是打包生成的exe檔案)

或pyinstaller -F 檔名.py(也會生成三個資料夾,有用的同樣是dist檔案,不同的是dist資料夾下只有一個exe檔案)

pyinstaller含有的一些引數(來源與https://blog.csdn.net/qq_27833589/article/details/62898130):

-F的含義為將原檔案打包為exe檔案,這裡還有其他幾個可選引數
-D:建立一個目錄,包含exe檔案,但會依賴很多檔案,這是預設選項
-c:使用控制檯,這也是預設選項
-w:使用視窗,無控制檯

三 遇到的問題

問題描述:按照上面的方法成功打包,但是在執行exe檔案時出現了一個非常奇怪的問題,就是程式好像開啟了多個程序來分別執行該程式一樣,控制檯視窗可以看到的是程式正在瘋狂的不斷重複的執行,而且重複執行不是一次結束後,立馬接著執行,而是不等上次執行結束,就又開始執行了下一次。

問題查詢:剛開始的時候,十分的迷,根本不知道怎麼去尋找原因,後來在實驗室大佬的指導下,一步一步的排除原因,最後終於找到是因為引入的一個工具包的原因,這個包是from sklearn import preprocessing用來對資料進行歸一化。

結論:在使用pyinstaller時,不要py檔案中不要引用from sklearn import preprocessing包,儘量通過自己寫函式來實現相應的功能(我就是這麼做的,因為歸一化還是比較好寫的)。pyinstaller 可以將tensorflow和keras進行完好的封裝,這點上不用懷疑pyinstaller的能力。

之前一直寫C++,沒有接觸過python。最近幾個月,用python寫了一些功能,發現python真的太好用了,開始迷戀於python了。