PyInstall的安装,使用,以及最后打包成一个exe文件

首先PyInstall安装

pip3 install pyinstaller -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

打包常用命令

pyinstaller -w -F test.py

-w 表示运行exe文件后不出现cmd命令窗口
-F 表示打包成一个单独的exe文件

使用命令后会生成两个文件夹。
在这里插入图片描述
生成的exe文件会存放在dist文件夹下面。并且生成的同目录级别的spec是中间文件,不用太关心。

打包成单个exe文件,并包含其它静态资源

在这里插入图片描述

这块可是费劲心思,采用了很多方法都以失败告终。我以最简单的方式来解释。最后的最后讲原理。

我们先生成上面讲到的中间文件 .spec

pyi-makespec XXXXX.py

你看我这里需要的静态资源放在 resources目录下
在这里插入图片描述
这时候,修改中间文件,.spec,添加datas里面的数据,把当前目录的resources文件夹的内容 包含进去,命名为 resources。
在这里插入图片描述
同时也要注意修改console=False防止出现黑窗口
在这里插入图片描述
那我们代码应该怎么使用呢?保证打包前和打包后都能正常运行

我引用路径是这么引用的
在这里插入图片描述
添加了resource_path方法如下

def resource_path(relative_path):
    if getattr(sys, 'frozen', False): #是否Bundle Resource
        base_path = sys._MEIPASS
    else:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

原理解释:

我们打包生成前后,os.path.join方法指向的路径是不一样的。
打包前,是本地路径下的resources路面
打包后,是C:\Users\dell\AppData\Local\Temp_MEI443002下的resources目录

默认我们在打包后,C:\Users\dell\AppData\Local\Temp_MEI443002后是不存在我们自己静态资源resources目录的。
但是修改了中间文件.spec后,讲datas中添加了 我们本地的resources目录。于是我们运行exe后,它会自己在C:\Users\dell\AppData\Local\Temp_MEI443002下生成一个我们打包前引入的resources目录。于是运行单个exe后,也会包含我们自己定义的静态资源。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小梁说代码

你的鼓励是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值