在项目上,帮财务开发了一个小工具,但财务不会用python,需要帮忙打包成exe可执行文件。目前比较常见的打包exe方法都是通过Pyinstaller
来实现的,本文也将使用这种常规方法。
安装Pyinstaller
安装Pyinstaller,直接在cmd使用pip命令
代码语言:javascript复制pip install pyinstaller
如果网速太慢可以切换国内源来加速
代码语言:javascript复制pip install -i https://pypi.douban.com/simple/ pyinstaller #豆瓣源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller #清华源
Pyinstaller打包步骤
本文代码用来说明,用来批量修改jpg文件夹下的图片,代码为
代码语言:javascript复制import os
path = os.getcwd() '/jpg'
# 获取该目录下所有文件,存入列表中
fileList = os.listdir(path)
n = 0
for i in fileList:
# 设置旧文件名(就是路径 文件名)
oldname = path os.sep fileList[n] # os.sep添加系统分隔符
# 设置新文件名
newname = path os.sep 'a' str(n 1) '.jpg'
os.rename(oldname, newname) # 用os模块中的rename方法对文件改名
print(oldname, '======>', newname)
n = 1
将其中脚本changename.py、
软件图标图片tu.ico
放在一起
1、cmd切换到代码文件的目录
2、执行命令Pyinstaller -F -w -i tu.ico changename.py,代码内容不多,执行挺快的。
执行完毕会发现当前目录多了几个文件夹,打开其中名为dist的文件夹。
已经生成了一个名为changename
的exe应用程序,
Pyinstaller参数详解
代码语言:javascript复制Pyinstaller -F -w -i tu.ico changename.py
解释一下其中Pyinstaller的参数,其中
-F
参数代表制作独立的可执行程序。
-w
是指程序启动的时候不会打开命令行。
-i tu.ico
设置自己的图标图案,因为默认打包图片是下图这样的。这个参数也可以写成--icon=tu.ico
最后稍微总结一下:
代码语言:javascript复制Pyinstaller -F changename.py 打包exe
Pyinstaller -F -w changename.py 不带控制台的打包
Pyinstaller -F -w -i tu.ico changename.py 打包指定exe图标打包
以上三个是比较常用的参数,其他参数详见下表
ico图片生成
一个是可以找专门的ico图片网站,不过都很小众,图片库也很小。
另一个是可以自己生成,分享一个网站,可以把其他格式图片转成ico格式:https://app.xunjiepdf.com/img2icon/
Python打包为什么大?
在压缩打包之前,先简单说一下为什么Python打包过大?
Python打包exe,不但体积大而且运行奇慢。解释型语言大都是这个样子,只不过Python尤其突出。要解决大而慢,只能用编译型语言,如C,C ,甚至VB都好很多,体积最小的是汇编。
此外,还有知乎大佬说是因为“Anaconda里内置了很多库,打包的时候打包了很多不必要的模块进去,要用纯净的Python来打包。”
所以我们可以模拟一个新环境,其中只安装我们本次打包所必要的工具包即可。
那最适合的就是——虚拟环境了!
我的电脑conda安装不行,就没法截图了,大致命令为:
代码语言:javascript复制conda create -n test python==3.6 #创建虚拟环境
conda activate test #激活虚拟环境
conda deactivate #退出虚拟环境
然后在test虚拟环境下,执行
代码语言:javascript复制Pyinstaller -F -w -i tu.ico changename.py 打包指定exe图标打包
就可以得到相对小一点的exe文件