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位系统。

  • 22
    点赞
  • 128
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
### 回答1: pyinstaller --add-data是一个命令行参数,用于将额外的数据文件添加到PyInstaller打包的可执行文件中。这些数据文件可以是任何类型的文件,如图像、音频、文本文件等。使用该参数可以使打包后的应用程序更加完整和功能丰富。 ### 回答2: Pyinstaller是一个可以将Python脚本打包成可执行文件的工具。在使用Pyinstaller过程中,我们经常需要使用到--add-data参数。 --add-data参数可以将需要的数据文件添加到可执行文件中,使得可执行文件在运行时可以直接使用这些数据文件,无需额外读取。 使用--add-data参数的基本语法为: --add-data <source>:<destination> 其中,<source>表示源文件路径,<destination>表示目标文件路径。 需要注意的是,由于Windows和Unix系统路径分隔符不同,因此在Windows系统中需要使用分号(;)作为路径分隔符,而在Unix系统中需要使用冒号(:)作为路径分隔符。 在使用--add-data参数的过程中,我们需要注意以下几点: 1. 不要将过多的数据文件添加到可执行文件中,否则会导致可执行文件过大,影响用户体验。 2. 添加的数据文件应该是程序所必需的,不要添加无用的数据文件。 3. 添加的数据文件应该是相对路径,而不是绝对路径,这样才能保证程序在不同的环境下都可以正确运行。 总之,--add-data参数是Pyinstaller中一个非常实用的参数,在打包时可以帮助我们将必需的数据文件打包进可执行文件中,使得运行更加便捷。但同时需要注意遵循上述提到的几点注意事项。 ### 回答3: pyinstaller是一款非常方便的Python代码打包工具,通过它我们可以将Python代码打包成单个可执行文件,极大地方便了我们分享和部署Python程序。在使用pyinstaller的过程中,有一个非常重要的参数--add-data,该参数可以将我们的Python程序所需要的其他资源文件(如图片、配置文件、字体等)一同打包进去。 使用--add-data参数的语法为: pyinstaller --add-data '文件路径;目标路径' main.py 其中'文件路径'表示需要打包的文件路径,'目标路径'表示该文件在打包后的可执行文件中应该保存的位置。使用';'来进行多个文件路径和目标路径的连接。main.py表示我们的Python主程序的路径。 例如,我们有一个main.py的程序,还需要使用一个images文件夹下的图片作为程序的一部分,可以使用以下命令进行打包pyinstaller --add-data 'images/*.jpg;images/' main.py 这里的’images/*.jpg‘表示我们想要打包所有后缀为.jpg的文件,路径为当前目录下的images文件夹。’images/‘表示我们希望将目标文件夹保存在.exe文件生成的同一文件夹下的images文件夹中。 总之,使用--add-data参数可以很方便地将程序所需的资源文件打包进程序中,从而形成一个独立的可执行文件。这样可以避免一些文件丢失或路径错误等问题,保证程序的完整性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值