py3打包多文件以及依赖资源为exe

需求

需要打包多个文件py,有py_main.py py1.py py2.py文件以及资源show.png,需要打包py_mainmain的程序主入口,加载了py1、py2模块函数功能,整个过程中使用到了png图片资源。

执行过程

  1. 运行CMD
pyinstaller -F py_main.py

得到一个py_main.spec

  1. 修改spec文件
# -*- mode: python ; coding: utf-8 -*-


block_cipher = None


a = Analysis(['py_main.py','py1.py','py2.py'],
             pathex=['./'], # py文件目录 我放到一个层级的
             binaries=[],
             datas=[('show.png', '.')],  #需要加载的资源 以及资源在上面目录
             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,
          a.binaries,
          a.zipfiles,
          a.datas,  
          [('show.png', 'E:/codetest/show.png','DATA')],  #资源名称(py程序里加载的名称)、资源的绝对路径、'DATA'默认值
          name='py_main',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=True,		#是否开启console的print黑框框
          disable_windowed_traceback=False,
          target_arch=None,
          codesign_identity=None,
          entitlements_file=None )

  1. 再次运行pyinstaller命令,生成py_main.exe
pyinstaller -F py_main.spec
  1. 点击exe运行,或者把exe放入CMD运行,查看日志,还有一个办法查看资源的调用,就是运行exe的时候会产生临时文件夹,位置在
C:\Users\xxx\AppData\Local\Temp\_MEIxxxx

异常

如果发现提示找不到资源怎么办?使用以下代码

def resource_path(filaeName):
    if hasattr(sys, "_MEIPASS"):
        return os.path.join(sys._MEIPASS, filaeName)
    return os.path.join(filaeName)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

big pineapple

谢谢你的小助力,时间就是金钱。

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

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

打赏作者

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

抵扣说明:

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

余额充值