一. pyinstaller和Nuitka使用感受
1.1 使用需求這次也是由于項目需要,要將python的代碼轉成exe的程序,在找了許久后,發(fā)現(xiàn)了2個都能對python項目打包的工具——pyintaller和nuitka。
這2個工具同時都能滿足項目的需要: 1.2 使用感受2個工具使用后的最大的感受就是: pyinstaller體驗很差! nuitka真香!
二. Nuitka的安裝及使用2.1 nuitka的安裝2.2 使用過程對于第三方依賴包較多的項目(比如需要import torch,tensorflow,cv2,numpy,pandas,geopy等等)而言,這里最好打包的方式是只將屬于自己的代碼轉成C++,不管這些大型的第三方包! 以下是我demo的一個目錄結構(這里使用了pytq5框架寫的界面): ├─utils//源碼1文件夾├─src//源碼2文件夾├─logo.ico//demo的圖標└─demo.py//main文件
使用以下命令(調(diào)試)直接生成exe文件: nuitka --standalone --show-memory --show-progress --nofollow-imports --plugin-enable=qt-plugins --follow-import-to=utils,src --output-dir=out --windows-icon-from-ico=./logo.ico demo.py
這里簡單介紹下我上面的nuitka的命令: --standalone :方便移植到其他機器,不用再安裝python
--show-memory --show-progress :展示整個安裝的進度過程
--nofollow-imports :不編譯代碼中所有的import,比如keras,numpy之類的。
--plugin-enable=qt-plugins :我這里用到pyqt5來做界面的,這里nuitka有其對應的插件。
--follow-import-to=utils,src :需要編譯成C++代碼的指定的2個包含源碼的文件夾,這里用, 來進行分隔。
--output-dir=out :指定輸出的結果路徑為out。
--windows-icon-from-ico=./logo.ico :指定生成的exe的圖標為logo.ico這個圖標,這里推薦一個將圖片轉成ico格式文件的網(wǎng)站(比特蟲)。
--windows-disable-console :運行exe取消彈框。這里沒有放上去是因為我們還需要調(diào)試,可能哪里還有問題之類的。
經(jīng)過1min的編譯之后,你就能在你的目錄下看到: ├─utils//源碼1文件夾├─src//源碼2文件夾├─out//生成的exe文件夾 ├─demo.build └─demo.dist └─demo.exe//生成的exe文件├─logo.ico//demo的圖標└─demo.py//main文件
當然這里你會發(fā)現(xiàn)真正運行exe的時候,會報錯:no module named torch,cv2,tensorflow 等等這些沒有轉成C++的第三方包。 這里需要找到這些包(我的是在software\python3.7\Lib\site-packages下)復制(比如numpy,cv2這個文件夾)到demo.dist 路徑下。 至此,exe能完美運行啦!
|