Python打包exe文件并换图标最强版教程

Posted sakttylls

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python打包exe文件并换图标最强版教程相关的知识,希望对你有一定的参考价值。

嗨嗨,大家好,我是小圆 ~

今天又想来分享一个Python打包exe文件的教程~
这次是最强终极版~~~~

接下来请欣赏我的表演 — Python打包exe可执行文件,并给它换一个图标

首先把你的代码准备好,尽量不要中文路径,容易报错。

欢迎来这里一起交流学习~

模块

Pyinstaller

它不是Python默认有的模块,所以需要我们安装一下,直接 pip install Pyinstaller

打包

模块安装好后我们开始打包,注意,所有的文件都尽量用英文,免得报错了。

首先我们在CMD里面把目录切换到你的代码存放的那个盘,比如我的是放在C盘,输入C: ,当然,我这里已经在C盘了所以不用切换。

然后复制你代码所在的文件地址

最快的是直接全部复制上,如果你要是觉得太多了不好看的话,就看你cmd的目录当前显示在哪里,我这里已经在Administrator 了所以我可以只要后面的目录也可以。

在cmd输入cd再按一下空格,把文件目录输入进去,这样就成功切换到了你想要的目录。

然后重点来了,现在就可以开始打包了,输入神秘代码 pyinstaller -F -w -i aaa.ico zzz.py

简单的介绍下这些代码都是什么意思

1、pyinstaller (这个是打包exe文件使用的模块)
2、-F(这个是生成exe文件的,F一定要用大写,不然就会失败,所以必须要)
3、-w(这个的话小写也可以,主要是解决打包后,运行文件会有黑框框闪过,建议是加上)
4、-i(这个是用于替换你的图标,把文件图标替换成你想要的样子,可加可不加)
5、aaa.ico (这个是你准备好要替换的图标名字+格式,切记用英文,两三个最好,别用单个的字母,有些字母会导致不成功)
6、zzz.py(这个是你的代码文件名字,放在最后)

替换图标

有不懂问题可以点击此处~

如果你要替换图标的话,首先你要准备一个 32*32 像素的图片文件,你用美女也好,用帅哥也好都随你。
这个格式的话,给你们介绍一种最简单的方法——百度 jpg在线转ico,第一个就是。

这就不用我介绍怎么操作了吧,巨简单,最后转换成功后点一下输出文件名,它会弹出新的窗口,另存为就好了,把它下载后跟你的代码放到一个目录下。

OK,前戏到这里就差不多完成了,按回车, 开始打包 。

exe可执行文件在这个dist文件夹里

看,完美的改成想要的图标了。

兄弟们,一行代码就搞定了,兄弟们快去试试吧~
如果不改图标,那就是半分钟的事情。当然加上改图标,也就多了半分钟。

好啦,今天的分享到这里就结束了 ~
如果需要视频学习的可以在b站搜索 :Python小圆

对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦
觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/

Pyinstaller如何打包多个资源文件(超详细教程)

有时我们需要将python源程序使用pyinstaller打包成可执行exe发布,而除了我们常用的添加exe图标功能外,很多时候还希望能把各种图片、声音、字体等资源打包到exe中。尤其是在使用“-F”指令时,很多时候并不想看到如下图的情况(程序打包到一个exe文件了,但资源文件仍然是孤零零的一大堆),这样很不利于发布~~

那我们应该怎么办呢?网上很多教程都讲的不够详细,这里就不一一列举了。我们采用最强大的方法,直接修改pyinstaller生成的spec文件(在这里因为源代码是“main.py”,所以生成的spec默认文件名为“main.spec”)。
首先,先确认自己是否安装pyinstaller(什么?我还没有安装?不好意思,请先查阅其他教程进行安装,完成后再来看本文章)
其次,确认一下自己源程序内import的所有三方库是否均已安装。这里可能会出现运行时正常,打包好后报错提示“XXX库找不到”的情况。这是因为电脑上装有多个Python,在运行时调用的是环境A,而在打包时默认的pyinstaller却是在环境B下的。(什么?不会解决此问题?请先移步至别的文章学习)
这两步完成后,我们开始正式的打包。首先在python源文件的文件夹内上方地址栏中输入“cmd”后回车,cmd则会自动跳转到当前路径,如下图所示


输入如下命令后回车

pyi-makespec -F -w -i favicon.ico main.py

其中“pyi-makespec”会生成一个spec文件(用于指定打包的配置),“-F”效果是打包成一个文件,“-w”则可以使打包后的程序运行时不弹出黑窗口(在打包使用图形界面库的代码,如tkinter、pyqt5、pygame时很有用)。“-i”后跟一个ico格式(其他格式会报错)的图标,则可以指定打包后程序的图标。“main.py”是你要打包程序的入口文件(其他被调用的文件会自动导入)

执行后如下图所示


可以看到多出了一个“main.spec”文件(本质上是txt文本文件,可用记事本打开,是实现默认/个性化打包的文件)
我们用记事本打开,可以看到如下内容

可以看到刚刚执行的一些附加条件,如不显示console,设置图标为favcon.ico等。而我们在此问题中需要关注的是“datas=[]”,这里可以指定打包的资源文件。
接下来在python主文件最前面加入下面的代码

import os
import sys


# 资源文件目录访问
def source_path(relative_path):
    # 是否Bundle Resource
    if getattr(sys, 'frozen', False):
        base_path = sys._MEIPASS
    else:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)


# 修改当前工作目录,使得资源文件可以被正确访问
cd = source_path('')
os.chdir(cd)


这段代码的功能是,当程序未打包时,不改变当前工作目录;当程序被pyinstaller打包成exe时,则会将工作目录修改为一个临时文件夹"C:\\Users\\23121\\AppData\\Local\\Temp_MEI172602",届时打包好的程序会将资源文件都放到此处。
接下来我们解析“datas=[]”,此列表内可以加入一个元组(注意,此元组最多可以有两个元素)指定要打包的资源和打包后在临时文件夹内的文件夹名称。比如“datas=[(‘res’,‘.’)]”第一个res代表需要打包的文件夹名res,其内部存放的全都是各种资源文件。第二个’.‘代表打包后在临时文件中的文件夹名称。因为我的程序资源原本是存放在main.py的同级目录的,所有这里不需要运行后将资源释放到指定的文件夹中,直接使用’.'即可。如本身被调用的资源就在一个二级文件夹“resoure”里,则修改为“datas=[(‘res’,‘resource’)]”。
下图为修改后的main.spec

然后创建一个名为“res”的文件夹,将需要打包的资源全部放进去(注意:不需要把程序图标也放进去,“favicon.ico”必须放到“main.py”同级目录,否则在打包时会提示找不到图标文件)

接下来回到刚刚的cmd窗口中执行下面的命令

pyinstaller main.spec



可以看到已经成功打包了。
这时会多出一个dist文件夹,我们打包好的程序就在里面。


现在程序已经能独立运行了,我们运行程序后看一下资源被释放到的路径:



可以看到资源全部被临时释放到这里了。关闭程序后再次尝试进入此文件夹:

可以发现我们的临时文件夹被清除了。

至此,这篇关于pyinstaller如何打包多个资源文件的教程就结束了。如果大家仍有疑问,欢迎在评论区积极留言或者小窗私信~~

以上是关于Python打包exe文件并换图标最强版教程的主要内容,如果未能解决你的问题,请参考以下文章

使用rcedit修改exe文件信息(图标版本版权等)

使用rcedit修改exe文件信息(图标版本版权等)

将Python程序打包成exe文件

python3怎么打包成exe

⭐️GUI编程:图片批量加水印,附打包exe教程带图标(干货巨多,建藏!)⭐️

转载pyinstaller教程