Python文件打包为exe可执行文件【亲测四步法】

一、最粗略的打包方式

操作步骤

1、安装pip install pyinstaller(安装地址
2、切换到需要打包的工程路径 cd D:\task\pyqt5
3、运行命令 pyinstaller -F main.py (xxx.py 打包的文件)
4、打包成功后项目新增dist文件,进入点击运行打包好的exe程序

注意事项

Pyinstaller 常用的参数用法:

  • –distpath : 打包到哪个目录下
    -w: 指定生成 GUI 软件,也就是运行时不打开控制台
    -c: 运行时打开控制台
    -i : 指定打包后可执行文件的图标
    –clean: 在构建之前清理PyInstaller缓存并删除临时文件 关于打包成什么样,有两种选择:
    -D: 创建包含可执行文件的单文件夹包,同时会有一大堆依赖的 dll 文件,这是默认选项
    -F: 只生成.exe 文件,位于项目dist文件夹下
    效果如图

补充细节-更换图标

在这里插入图片描述

推荐一个图标获取地址,里面ico蛮多的:easyicon
下载了自己心仪的ico后,用-i+ico路径来替换默认ico,以管理员的身份运行重新生成exe工具,
命令为pyinstaller -i ico路径 -w xxxx.py
在这里插入图片描述

二、需要进行参数传递的exe

情况举例

林某利用pyqt写了一个对图片进行情感标注的图形化界面GUI,但是需要标注的图片数量过大,只能分时段多次标注,但每一次标注人员完成的数量是随机的,在下一次标注时,给定的新索引应该为上一次标注结束索引+1。所以需要将索引值传递给exe文件对应的py文件,实现动态跟随。

解决方案

1、main.py文件中应该出现下列代码:
self.index = int(sys.argv[1])
2、打开命令提示符窗口cmd,先切换到main.exe所在路径,比如cd D:task\1\,再输入命令main.exe 0 #0代表从第一张图片开始进行情感标注
3、在下一次需要传递参数时,重复2的操作,再输入命令
main.exe 456 #456代表从第456张图片开始标注

细节详解

为什么是argv[1]?
sys.argv变量是一个包含了命令行参数的字符串列表,即使用命令行传递给程序的参数。例子:cmd执行 python using_sys.py we are arguments
输出结果如下:

#encoding=utf-8
import sys
a=sys.argv[0]
b=sys.argv[1]
c=sys.argv[2]
c=sys.argv[3]
print("filename:",a)
print("param1:",b)
print("param2:",c)
print("param3:",d)
输出:
('filename:', 'using_sys.py')
('param1:', 'we')
('param2:', 'are')
('param3:', 'arguments')

其中,sys.argv[0]默认表示代码本身文件路径,所以手动传递的参数需要从sys.argv[1]开始

三、打包生成的exe文件过大

1、尽量用from…import…

在代码里面尽量不要用import,能from…import…就尽量用这个,因为如果是import的话,在打包的时候,会将整个包都打包到exe里面,没有意义的增大了exe工具的大小

2、 解决方案

用 Pyinstaller 打包 Python 程序 + 解决打包结果过大的问题

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值