<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python的打包神器—Nuitka!

          共 4233字,需瀏覽 9分鐘

           ·

          2022-12-05 07:40

          作者:李小肥
          來源:https://www.lixiaofei2yy.websit(已失效)

          一、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的一個目錄結(jié)構(gòu)(這里使用了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 :指定輸出的結(jié)果路徑為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能完美運行啦!

          我們爬蟲第三期來了,加入我們,學更實用,更值錢的 Python 技術(shù)!

          
                        
          
                          


          ace7553fa747592869be14206067259a.webp


          從0到1系統(tǒng)掌握Python 技術(shù)(入門進階)

          2個企業(yè)實戰(zhàn)項目,4大常用工具

          掌握24種反爬策略手段,成為真正爬蟲高手

          能抓取市面上90%的網(wǎng)站

          掌握主流爬蟲技術(shù),就業(yè)找工作 真正全方位幫助大家從0到1,從 Python 入門到進階,轉(zhuǎn)行找爬蟲工作。

          掃碼發(fā)送「爬蟲」咨詢


          瀏覽 89
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  看黄色片网站免费 | 黄色成人网站免费在线观看 | 大香蕉伊人视频网 | 动漫美女操逼 | 日韩精品国产一区二区 |