Python的打包神器—Nuitka!
來源丨網(wǎng)絡
一. pyinstaller和Nuitka使用感受
1.1 使用需求
這次也是由于項目需要,要將python的代碼轉(zhuǎn)成exe的程序,在找了許久后,發(fā)現(xiàn)了2個都能對python項目打包的工具——pyintaller和nuitka。
這2個工具同時都能滿足項目的需要:
隱藏源碼。這里的pyinstaller是通過設置key來對源碼進行加密的;而nuitka則是將python源碼轉(zhuǎn)成C++(這里得到的是二進制的pyd文件,防止了反編譯),然后再編譯成可執(zhí)行文件。
方便移植。用戶使用方便,不用再安裝什么python啊,第三方包之類的。
1.2 使用感受
2個工具使用后的最大的感受就是:
pyinstaller體驗很差!
一個深度學習的項目最后轉(zhuǎn)成的exe竟然有近3個G的大小(pyinstaller是將整個運行環(huán)境進行打包),對,你沒聽錯,一個EXE有3個G!
打包超級慢,啟動超級慢。
nuitka真香!
同一個項目,生成的exe只有7M!
打包超級快(1min以內(nèi)),啟動超級快。
二. Nuitka的安裝及使用
2.1 nuitka的安裝
直接利用pip即可安裝:
pip install Nuitka下載vs2019(MSVS)或者MinGW64,反正都是C++的編譯器,隨便下。
2.2 使用過程
對于第三方依賴包較多的項目(比如需要import torch,tensorflow,cv2,numpy,pandas,geopy等等)而言,這里最好打包的方式是只將屬于自己的代碼轉(zhuǎn)成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這個圖標,這里推薦一個將圖片轉(zhuǎn)成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等等這些沒有轉(zhuǎn)成C++的第三方包。
這里需要找到這些包(我的是在software\python3.7\Lib\site-packages下)復制(比如numpy,cv2這個文件夾)到demo.dist路徑下。
至此,exe能完美運行啦!
作者:李小肥
來源:https://www.lixiaofei2yy.website
萬水千山總是情,點個????行不行。
推薦閱讀:
入門:?最全的零基礎學Python的問題? |?零基礎學了8個月的Python??|?實戰(zhàn)項目?|學Python就是這條捷徑
干貨:爬取豆瓣短評,電影《后來的我們》?|?38年NBA最佳球員分析?|? ?從萬眾期待到口碑撲街!唐探3令人失望? |?笑看新倚天屠龍記?|?燈謎答題王?|用Python做個海量小姐姐素描圖?|碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影
趣味:彈球游戲? |?九宮格? |?漂亮的花?|?兩百行Python《天天酷跑》游戲!
AI:?會做詩的機器人?|?給圖片上色?|?預測收入?|?碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影
小工具:?Pdf轉(zhuǎn)Word,輕松搞定表格和水印!?|?一鍵把html網(wǎng)頁保存為pdf!|??再見PDF提取收費!?|?用90行代碼打造最強PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換?|?制作一款釘釘?shù)蛢r機票提示器!?|60行代碼做了一個語音壁紙切換器天天看小姐姐!|
年度爆款文案
6).30個Python奇淫技巧集?
點閱讀原文,看B站我的20個視頻!

