程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【python】pyinstaller使用 --add-data --add-binary打包額外資源

編輯:Python

為什麼要使用 --add-data

程序裡文件格式有很多種:

源代碼 .py
圖片格式 .png .jpg .ico 等
配置文件 .ini .json .xml等
其他可執行文件 .bin .exe等
模型文件 .pth 等
說明文檔 .txt .md等
注意:

除了.py之外,其他格式不會編譯。
除了.py之外,其他格式若要打包進去,需要使用 --add-data 處理,或者手動拷貝(嫌麻煩,你每次都能記住?)

如何使用 --add-data?

用法:pyinstaller x.py --add-data="源地址;目標地址"。 windows以;分割,linux以:分割

例如:將 config 目錄的所有文件打包到目標的 config 文件夾(不存在會自動創建)下

 

pyinstaller x.py --add-data ".\\config\\*;.\\config"

可使用多次 --add-data

例如:

pyinstaller x.py  -n Demo2.0.3 --key [email protected])v -i "res\logo.ico"  
--add-data=".\*.txt;." --add-data=".\*.json;." --add-data="res\*.*;.\res" 
--add-data="dist\models\*.*;.\models"

.spec文件裡如何使用 --add-data

# -*- mode: python ; coding: utf-8 -*-
 
block_cipher = pyi_crypto.PyiBlockCipher(key='[email protected])v')
 
 
a = Analysis(['x.py'],
             pathex=['D:\\Miniconda3\\envs\\cuda11\\Lib\\site-packages', 'D:\\project\\demo'],
             binaries=[],
             datas=[('.\\*.json', '.'), ('res\\*.*', '.\\res'), ('dist\\models\\*.*', '.\\models')],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          [],
          exclude_binaries=True,
          name='Demo2.0.3',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=False , icon='res\\logo.ico')
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               upx_exclude=[],
               name='Demo2.0.3')

Analysis裡的datas就是使用 --add-data對應的地方!

一個[]裡,有多個(),每個()以逗號隔開,左邊是程序路徑,右邊是放入打包裡的路徑!

對於深層路徑要寫完整路徑!

binaries=[('onnxruntime\\capi\\*.*','\\onnxruntime\\capi')],

--add-binary同--add-data類似


————————————————
Thanks to:https://blog.csdn.net/u012219045/article/details/114841287


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved