pyinstaller系列之五:使用 --add-data 打包额外资源。

为什么要使用 --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 !@)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='!@)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对应的地方!

一个[]里,有多个(),每个()以逗号隔开,左边是程序路径,右边是放入打包里的路径!

Tips:自己多打包几次就熟悉了!下一次继续 pyinstaller系列之六:适配32位系统。

  • pyinstaller系列之一:简介,安装及简单使用

  • pyinstaller系列之二:去掉命令行,指定密码来增加反编译难度,指定可执行文件名,设置图标,清空上一次编译生成的各种文件

  • pyinstaller系列之三:有多个虚拟环境时如何指定python导入模块的路径

  • pyinstaller系列之四:如何设置打包出来的文件的版本信息。

  • pyinstaller系列之五:使用 --add-data 打包额外资源。

  • pyinstaller系列之六:适配32位系统。

  • pyinstaller系列之七:打包各种问题汇总。

  • pyinstaller系列之八:以安装包交付(windows)。

  • pyinstaller系列之九:构建GUI的docker镜像,docker运行GUI程序。

  • pyinstaller系列之十:pip安装GUI程序。

  • pyinstaller系列之十一:exe 反编译到 源码 尝试

你可能感兴趣的:(pyinstaller,python,开发语言,后端)