Python: pyinstaller打包exe(含file version信息)

最近项目上一直都是用Spyder直接运行.py文件的方式来执行每日的自动化程序,每天都要手动去点击Run来执行一次,所以考虑把.py文件直接打包成exe,然后用windows的task schedule功能来让它自动每天运行。
用pyinstaller来打包exe文件,同时为了便于维护,给exe文件添加文件版本file version信息。
1. 安装pyinstaller
机器上的python环境是直接安装的Anaconda软件,所以直接打开“Anaconda Prompt”来安装pyinstaller,运行命令:

在学习过程中有什么不懂得可以加
我的python学习交流扣扣qun,688244617
群里有不错的学习教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容。

pip install pyinstaller。(如果提示有其他相关的组件xxxx缺失,用相应的方式来安装就好: pip install xxxx)

在这里插入图片描述
2. 设置文件版本信息
为了方便版本管控,最好是给每次打包发布的exe文件设置文件版本信息——右键点击exe查看属性中的详情信息中可以看到版本信息。
方法一:
进入pyinstaller的此目录\PyInstaller\utils\cliutils\下(如果不知道路径可以通过去全盘查询cliutils来找到相应的文件夹,此处安利一款window上的文件查询小软件——Everything:https://www.voidtools.com/zh-cn/downloads/,查询速度超级快!)
你会看到如下几个文件:
在这里插入图片描述
其中的grab_version是用来捕获一个exe文件的版本信息并自动在同一目录下输出一个file_version_info.txt文件版本信息的,其中set_version是用来给一个exe文件赋值版本信息的,用法分别如下:

  1. 进入cmd界面

  2. 将目录转移到C:\ProgramData\Anaconda3\Lib\site-packages\PyInstaller\utils\cliutils\下

  3. 拷贝一个要获取版本信息的exe文件到这个目录下

  4. 在cmd窗口键入:python grab_version.py filename.exe

  5. 目录下会自动出现一个标准的file_version_info.txt文件,双击打开,按照相应的需求修改

  6. 在cmd窗口键入:python set_version.py file_version_info.txt youfilename.exe即可
    方法二:
    在打包的时候就已经准备好了版本信息文件:file_version_info.txt
    打包时用此参数–version-file 即可:pyinstaller --version-file file_version_info.txt test.py
    最后打包成exe,可以右键点击exe文件查看详细信息,可以看到有文件版本信息。
    在这里插入图片描述

  7. 运行pyinstaller来打包exe
    一般用pyinstaller打包exe会用到-F参数(表示打包成一个EXE文件)或者–version-file(给exe文件赋予版本信息),其他参数如需了解,可以输入pyinstaller -h来获取帮助信息。
    在这里插入图片描述
    比如需要打包test.py文件为exe,用如下方式:
    在这里插入图片描述

  8. 打包exe过程中遇到的问题:
    一般来说,如果是机器上组件缺失导致打包失败,安装相应的组件即可。
    我也遇到了2个比较特殊的问题:
    问题1: 打包提示报错:Cannot find existing PyQt5 plugin directories
    在这里插入图片描述
    解决方法:创建PyQt5 plugin的路径,按报错的路径来新建,然后将本来pyqt文件加中的pyqt5qmlplugin.dll文件拷贝放入此路径即可。
    先查询机器是上否有安装pyqt以及文件夹,可以用Anaconda Prompt中输入conda list来查看机器上的pyqt的版本以及路径信息(同理,也可以用Everything来查询此dll文件来定位到文件夹路径)。
    在这里插入图片描述

  9. 新建报错中提到的路径,同时把dll文件拷贝进去。
    在这里插入图片描述
    再次打包运行就不会再报此错误了。
    问题2:打包提示报错:RecursionError: maximum recursion depth exceeded
    在这里插入图片描述
    解决方法:因为python在处理循环的时候是手限制的,所以解除此限制即可

在打包文件夹中找到新生成的spec文件(比如test.spec),然后在该文件最上面添加如下2行来重定义循环次数即可;再运行此spec文件来打包即可:

import sys sys.setrecursionlimit(5000)

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用PyInstaller或者cx_Freeze将Python文件打包exe文件。 1. PyInstaller PyInstaller是一个流行的Python打包工具,可以将Python脚本打包为独立的可执行文件,支持Windows、Linux和MacOS等多个操作系统。使用PyInstaller打包Python文件为exe文件的步骤如下: 1) 安装PyInstaller 可以使用pip命令安装PyInstaller: ``` pip install pyinstaller ``` 2) 打包Python文件 在终端中切换到Python文件所在目录,执行以下命令: ``` pyinstaller --onefile your_script.py ``` 其中,--onefile参数表示将Python文件打包为一个exe文件,如果想要将Python文件打包为多个文件,则需要使用--onedir参数。 3) 查看打包结果 PyInstaller会在dist目录下生exe文件和其他相关文件,可以直接运行exe文件。 2. cx_Freeze cx_Freeze是另一个Python打包工具,用法与PyInstaller类似,也可以将Python脚本打包为独立的可执行文件。使用cx_Freeze打包Python文件为exe文件的步骤如下: 1) 安装cx_Freeze 可以使用pip命令安装cx_Freeze: ``` pip install cx_Freeze ``` 2) 编写setup.py文件 需要编写一个setup.py文件来配置打包参数,示例如下: ```python from cx_Freeze import setup, Executable setup( name='your_app_name', version='1.0', description='description of your app', executables=[Executable('your_script.py')] ) ``` 其中,name、version、description等参数可以根据需要进行修改,Executable('your_script.py')表示要打包Python文件。 3) 打包Python文件 在终端中切换到setup.py文件所在目录,执行以下命令: ``` python setup.py build ``` cx_Freeze会在build目录下生exe文件和其他相关文件。 无论是使用PyInstaller还是cx_Freeze,打包Python文件为exe文件都是非常简单的,可以方便地将Python应用程序部署到其他计算机上。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值