6、pyinstaller打包高级

一、简单打包:

1、直接打包命令,pythonfile.py为要打包的python文件

pyinstaller pythonfile.py

2、使用下面命令打包,产生单个可执行文件,该文件汇集一切,可直接运行。

pyinstaller -D  pythonfile.py

3、产生一个文件目录,里面有可执行文件

pyinstaller -F  pythonfile.py

二、高阶打包项目:

1、产生配置文件

   pyinstaller pythonfile.py

此时,当前目录下会生成一个pythonfile.spc的配置文件,还有build和dist文件,本次删除build和dist文件,然后修改配置文件,配置文件格式如下:

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


block_cipher = None


a = Analysis(['server.py'],
             pathex=[],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             hooksconfig={},
             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='server',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=True,
          disable_windowed_traceback=False,
          target_arch=None,
          codesign_identity=None,
          entitlements_file=None )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas, 
               strip=False,
               upx=True,
               upx_exclude=[],
               name='server')

规范文件中的语句创建四个类的实例 Analysis,PYZ、EXE和COLLECT.
一个新的类实例Analysis将脚本名称列表作为输入。它分析所有导入和其他依赖项。生成的对象(分配给a)包含名为的类成员中的依赖项列表:
scripts:命令行命名的python脚本;
pure:脚本所需的纯python模块;
pathex:搜索导入的路径列表(例如使用 PYTHONPATH),包括选项给出的路径–paths 。
binaries:脚本需要的非python模块,包括–add-binary选项给出的名称;
datas:应用程序中包含的非二进制文件,包括–add-data选项给出的名称。
类的一个实例PYZ是一个.pyz存档(在下面的检查存档中描述),它包含来自a.pure.
的实例EXE是从分析的脚本和PYZ 存档中构建的。该对象创建可执行文件。
的一个实例COLLECT从所有其他部分创建输出文件夹。在单文件模式下,不调用COLLECT,并且 EXE实例接收所有脚本、模块和二进制文件。
修改规范文件以将附加值传递给Analysis和传递给EXE.

2、配置文件详细说明

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


block_cipher = None


a = Analysis(['server.py','/home/pro/tect.py',...],                                  
             #所有python的py文件,用','隔开。
             pathex=['/home/chen/miniconda3/envs/chen_imgs_cpu/lib/python3.7/site-packages/',
             '/home/chen/桌面/ddd/eiseg/inference',],                         
             #文件目录所在路径,包括python当中的第三方库,用','隔开。
             binaries=[('/home/goldsun/桌面/flask-3/static_hrnet18_ocr64_human/static_hrnet18_ocr64_human.pdmodel','static_hrnet18_ocr64_huma'),
             ('/home/goldsun/桌面/flask-3/1.jpeg','.')],
             #二进制文件,包括图片等,以元组形式实现,一个元组当中两个值:第一个表示文件路径,第二个表示打包后该文件所放的路径
             datas=[('/home/chen/requirements.txt','.'),('/home/config/colormap.txt','.')],
             #存放非二进制文件,以元组方式,元组当中数据意义同上
             hiddenimports=[],
             hookspath=[],
             hooksconfig={},
             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='server',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=True,
          disable_windowed_traceback=False,
          target_arch=None,
          codesign_identity=None,
          entitlements_file=None )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas, 
               strip=False,
               upx=True,
               upx_exclude=[],
               name='server')
               #文件名名称

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小树苗m

您的打赏,是我的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值