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

ubuntu下使用pyinstaller將python文件打包成exe(py文件中含有keras框架的代碼)

strong 多個進程 exe sin font installer 排除 有用 命令行

一 使用工具

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了。

ubuntu下使用pyinstaller將python文件打包成exe(py文件中含有keras框架的代碼)