Python生成.exe文件亲测实践教程(初级+进阶,含资源文件程序的打包)

使用打包工具PyInstaller的基础操作:

此部分包括安装模块+模块的常见指令的使用 

具体流程可以参考以下两篇文章非常详细

(9条消息) Python如何生成可执行的.exe文件_zhaochongsi的博客-CSDN博客_python文件如何生成可执行文件https://blog.csdn.net/zhaochongsi/article/details/103202410nullhttps://blog.csdn.net/Nire_Yeyu/article/details/104683888

 常用参数:

-F, –onefile 打包一个单个文件,如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.py文件就别用
-D, –onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,我个人比较推荐这样,代码易于维护
-K, –tk 在部署时包含 TCL/TK
-a, –ascii 不包含编码.在支持Unicode的python版本上默认包含所有的编码.
-d, –debug 产生debug版本的可执行文件
-w,–windowed,–noconsole 使用Windows子系统执行.当程序启动的时候不会打开命令行(只对Windows有效)
-c,–nowindowed,–console
使用控制台子系统执行(默认)(只对Windows有效)

pyinstaller -c  xxxx.py

pyinstaller xxxx.py --console

-s,–strip 可执行文件和共享库将run through strip.注意Cygwin的strip往往使普通的win32 Dll无法使用.
-X, –upx 如果有UPX安装(执行Configure.py时检测),会压缩执行文件(Windows系统中的DLL也会)(参见note)
-o DIR, –out=DIR 指定spec文件的生成目录,如果没有指定,而且当前目录是PyInstaller的根目录,会自动创建一个用于输出(spec和生成的可执行文件)的目录.如果没有指定,而当前目录不是PyInstaller的根目录,则会输出到当前的目录下.
-p DIR, –path=DIR 设置导入路径(和使用PYTHONPATH效果相似).可以用路径分割符(Windows使用分号,Linux使用冒号)分割,指定多个目录.也可以使用多个-p参数来设置多个导入路径,让pyinstaller自己去找程序需要的资源
–icon=
将file.ico添加为可执行文件的资源(只对Windows系统有效),改变程序的图标  pyinstaller -i  ico路径 xxxxx.py

–icon= 将file.exe的第n个图标添加为可执行文件的资源(只对Windows系统有效)
-v FILE, –version=FILE 将verfile作为可执行文件的版本资源(只对Windows系统有效)
-n NAME, –name=NAME 可选的项目(产生的spec的)名字.如果省略,第一个脚本的主文件名将作为spec的名字

补充,关于EXE的图标、EXE生成路径的修改:

【python】将python代码打包成系统可执行文件(Pyinstaller模块)_百木从森的博客-CSDN博客_python生成可执行文件

补充以下实操过程中遇到的问题:

1、PyInstaller包安装成功之后无法识别使用(9条消息) Python——执行打包提示 ‘pyinstaller‘ 不是内部或外部命令,也不是可运行的程序_说说其实的博客-CSDN博客_pyinstaller不是内部或外部命令https://blog.csdn.net/weixin_40587180/article/details/117485581?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_paycolumn_v3&utm_relevant_index=2

上面这篇文章说的非常清楚,补充自己遇到的情况:

(1)、找不到PyInstaller安装的路径:

 在使用命令pip install pyinstaller检查的时候仔细查看报错信息( 2)、关于添加环境变量,实际上在很多博客中都是说修改系统变量中的path,我在实际上,单独改变系统变量和单独改变用户变量的时候都还是不行,最后还是同时在系统变量和用户变量的path中增加之后才可以了的。(根本上到底是什么原理仍有待进一步探究)

2、关于成功生成.exe文件之后如何找到生成的可执行文件的问题,以上的博客都没有具体说明清楚,实际上在执行生成的日志提示中会说具体的生成路径:

进阶使用:关于包含资源文件的程序的打包以及打包的原理深入

0、需求与目标:现在手上有一个需求需要实现——将一个包含多个.py文件的项目程序打包成可执行文件,并暴露配置文件以实现程序迁移到其他电脑上方便(打包之后尽量包含很少的文件,除了.exe和配置文件没有其他文件),健壮(由于程序实现的是监测的功能,所以需要程序运行的时候能够实现在运行的主机上无感知地后台运行而不会出现命令行窗口)地使用

1、关于PyInstaller对所打包的.py文件中所使用到其他文件的处理

        A:若PyInstaller的.py文件import了自己编写的其他.py文件—pyinstall会将import的其他.py一起打包进来,即将.exe迁移到其他环境中,依旧可以使用

测试: 测试问价如下

打包后的程序放到其他路径下执行:没问题

         B:若PyInstaller的.py文件涉及了对于其他类型文件的处理—程序运行需要保证相应文件与.exe文件正确的相对位置

打包好的程序的运行情况:只有在保持与.config相对路径正确的位置才能正常运行,否则双击运行程序会马上闪退,无法运行程序(编译成.exe的python程序中导入了你自己的文件。生成的.exe文件与你导入的文件不在同一文件夹内导致无法运行。而生成的.exe文件在dist文件夹中,虽然在同一工程内,可是不是在同一文件夹下,然而源程序中导入你所写的模块默认是在当前文件夹下的,所以所以所以!.exe文件在运行的时候找!不!到!导入的模块!故而不能执行!)

附:关于python处理配置文件 python标准库 configparser读取config或ini配置文件 - 知乎

——》考虑到我的需求,需要将配置文件放出来用于用户配置初始化参数,所以我就以这样的方式暴露配置文件,非常完美

 

——》如果需要将文件一起打包到.exe中,则需要修改.spec文件再次打包,具体操作参见以下文章:

python 打包exe(包含把资源文件打进包)_凡情的博客-CSDN博客_python打包资源文件

pyinstaller打包exe程序步骤和添加依赖文件方法_Spider.Li的博客-CSDN博客_pyinstaller打包依赖库

python将资源文件一起打包进exe 讲解(有算例)_总裁余(余登武)的博客-CSDN博客_python将资源文件一起打包

PyQT5打包:用PyInstaller遇到的坑 - 知乎 

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值