乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Pyinstaller 詳解多種打包過程(去坑,填坑)。...

       行走在理想邊緣 2022-05-25 發(fā)布于四川

      前言

      本篇文章,詳細介紹pyinstaller多種打包過程。去坑,填坑。




      一、安裝Pyinstaller 

      1)使用下面的命令即可安裝(win10)

      pip install pyinstaller



      二、使用參數(shù)

      1采用命令行的方式

             1)參數(shù)介紹

      選項參數(shù)   參數(shù)解釋
      -hhelp(幫助信息)

      -v

       version(版本號)
      -c顯示命令行窗口
      -w不顯示命令行窗口

      -F(大寫)

      生成結(jié)果是一個exe程序,所有依賴項被打包進該exe程序中
      -D(大寫)生成結(jié)果是一個包含exe程序的目錄,所有依賴項和exe程序位于同一目錄下
      -i為生成的exe程序指定一個icon格式的圖標
      -nname(指定生成的.exe和.spec文件名)
      –distpath指定打包后的程序存放目錄,默認存放在當前目錄下的(新建的)dist目錄
      –workpath為輸出的所有臨時文件指定存放目錄

             2) 使用示例

                  在調(diào)試過程中不推薦加-w參數(shù)這樣程序可能一閃而過,不能確定是執(zhí)行完畢還是bug終止。

      pyinstaller -F -w setup.py 

      2采用編寫.spec腳本方式。

              1)生成.spec方式

       pyi-makespec -F -w setup.py
      

      或者

      pyinstaller -F -w setup.py 

      也會生成.spec,不過推薦將生成的build文件夾和dist文件夾刪掉。

              2).spec腳本參數(shù)介紹

      1. # -*- mode: python ; coding: utf-8 -*-


      2. block_cipher = None


      3. a = Analysis(['setup.py'
      4. ],
      5. pathex=[],
      6. binaries=[],
      7. datas=[('lab','lab')],
      8. hiddenimports=[],
      9. hookspath=[],
      10. hooksconfig={},
      11. runtime_hooks=[],
      12. excludes=[],
      13. win_no_prefer_redirects=False,
      14. win_private_assemblies=False,
      15. cipher=block_cipher,
      16. noarchive=False)
      17. pyz = PYZ(a.pure, a.zipped_data,
      18. cipher=block_cipher)

      19. exe = EXE(pyz,
      20. a.scripts,
      21. [],
      22. exclude_binaries=True,
      23. name='setup',
      24. debug=False,
      25. bootloader_ignore_signals=False,
      26. strip=False,
      27. upx=True,
      28. console=True,
      29. disable_windowed_traceback=False,
      30. target_arch=None,
      31. codesign_identity=None,
      32. entitlements_file=None )
      33. coll = COLLECT(exe,
      34. a.binaries,
      35. a.zipfiles,
      36. a.datas,
      37. strip=False,
      38. upx=True,
      39. upx_exclude=[],
      40. name='setup')

      生成的腳本就是這樣的,包含以下主要配置參數(shù)

      參數(shù)含義
      aAnalysis類的實例,主要分析.py文件的依賴項,如第三方庫以及import模塊。a中內(nèi)容主要包括以下四部分:scripts,放入.py文件。;pure,程序代碼文件中的純Python模塊,包括程序的代碼文件本身;binaries,需要的二進制文件。;datas,非二進制文件。
      pyzPYZ的實例,是一個.pyz文件,包含了所有pure中的所有Python模塊。
      exeEXE類的實例,處理Analysis和PYZ的結(jié)果的,用來生成最后的exe可執(zhí)行程序。
      collCOLLECT類的實例,用于創(chuàng)建輸出目錄。只有-D命令下才會實例化,-F不會生成目錄。
      block_cipher加密密鑰(一般無加密需求,可不設(shè)置)

      而我們一般在配置時大多數(shù)情況下只涉及a,也就是Analysis類,下面逐一分析a里面的參數(shù)

      Analysis的參數(shù)簡介以及可能存在的問題
      scripts

      首先是一個列表(list),應(yīng)該存放與打包文件相關(guān)的所有.py文件。如果不存放的話會出現(xiàn)import錯誤 no module 的問題。

      pathex

      默認有一個spec的目錄,記得把用到的模塊的路徑添加到這個list變量里。

      默認的路徑是你打包的.py文件的同級路徑。

      存在問題:當引入自己的文件時添加此路徑并不起作用。仍會報錯

      ModuleNotFoundError: No module named 'core'
      datas將資源文件或文件夾,復(fù)制到打包后的目錄中,而datas中必須以元組形式否則會出現(xiàn)下面錯誤。注意一點放到這里面的文件不會被編譯,而是復(fù)制,所以重要的文件放到這里很容易泄露。
      ValueError: too many values to unpack (expected 2)
      
      binaries   添加二進制文件,也是一個列表,定義方式與datas參數(shù)一樣。
      hiddenimports隱式導(dǎo)入的模塊,比如在__import__、imp.find_module()、exec、eval等語句中導(dǎo)入的模塊,這些模塊PyInstaller是找不到的,需要手動指定導(dǎo)入,
      hookspath指定額外hook文件(可以是py文件)的查找路徑。
      runtime_hooks 指定自定義的運行時hook文件路徑(可以是py文件)
      excludes 指定可以被忽略的可選的模塊或包。


      三、可能遇到的問題以及解決辦法。

      1)打包過程找不到自己自建模塊如

      ModuleNotFoundError: No module named 'core'

      可以將模塊添加到datas里注意復(fù)制后的名字('core','core')最好是原名(個人經(jīng)驗)。

      還可以將自己的模塊直接復(fù)制到site-packages 下面,再打包。

      2)打包成功卻不能正確執(zhí)行,進程無法阻塞,.exe一直在循環(huán)。

      這是因為在調(diào)用某些模塊的時候,也是進程,而在多進程中,你程序中的進程不會被阻塞,而一直循環(huán)起進程。用下面方法去解決,注意下面代碼要放在代碼最開始在import 模塊之前。

      1. from multiprocessing import freeze_support
      2. freeze_support()

      四、總結(jié)

      這篇文章會解決常見的pyinstaller 打包問題,文章中錯誤的地方歡迎小伙伴指出。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多