Python代码打包成exe应用

目录

一、前期准备

二、Pyinstaller打包步骤

Pyinstaller参数详解

三、测试

 Spec 文件相关命令


一、前期准备

(1)首先,我们需要确保你的代码可以在本地电脑上的pycharm正常运行成功。

(2)我们要先安装Pyinstaller,如果网速太慢可以切换国内源来加速,本文其他部分直接使用国内源,不再重复注释。

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller 

二、Pyinstaller打包步骤

(1)打开pycharm,在D:\my\else\project_qxj\pythonProject1路径下新建一个项目文件夹,

这里我拿之前我的一个Python代码(code文件夹)作为案例来演示,这个文件夹里包含脚本main.py,音频文件buzzer_sound.wav等等。

把code文件夹放到这个项目下面,目录结构如下所示:

(2)将准备好的软件图标图片logo.ico放在了我电脑的D:\my\else\project_qxj\code目录下。

(3)使用pyinstaller打包Python代码非常简单,只需要在命令行中输入以下命令:

pyinstaller -F -w -i D:\my\else\project_qxj\code\logo.ico main.py --hidden-import gui.py --hidden-import config.py --hidden-import monitor_utils.py

Pyinstaller参数详解

PyInstaller 是一个用于将 Python 应用程序打包成独立可执行文件的工具。它可以将 Python 脚本及其所有依赖项打包到一个可执行文件中,使得在没有安装 Python 解释器的机器上也能运行该应用程序。下面是 PyInstaller 常用参数的详细解释:

  • -F, --onefile:生成单个可执行文件。
  • -w是指程序启动的时候不会打开命令行。如果不加-w的参数,就会有黑洞洞的控制台窗口出来。比如在刚才的脚本里我加一行print(‘Hello World!’),那么就不要放-w参数了,不然运行会报错,毕竟Hello World!需要在命令行里打印出来。此外,-w参数在GUI界面时非常有用。
  • -i xxx.ico:设置自己的图标图案

以上三个是比较常用的参数,其他参数详见下表

执行过程如下图所示:

可以看到打包成功了。而且执行完毕会发现当前目录多了几个文件夹,打开其中名为dist的文件夹,dist文件夹下将生成一个可执行exe文件,可以在Windows、Linux和MacOS上运行,并且图标也是我们设置的logo图案,看来已经成功一半了。。

三、测试

(4)接下来,我们就可以运行一下在dist文件夹下面已经生成的这个名为main的exe应用程序了。但是双击打开exe执行的时候,报错了,这说明我打包的程序是有问题的

(5)分析之后,发现好像是没在代码中找到我的数据文件。

打开生成的main.spec文件,这里需要再做一个操作,这样才能使得WAV文件被打包到exe中,运行时也可以正确找到和播放。

  • 需要把用到的数据文件,比如我的代码里用到了这个音频文件buzzer_sound.wav,就需要添加到datas里。
  • hiddenimportsspec 文件中的一个重要选项,用于指定 PyInstaller 在打包时需要包含的额外模块,这些模块是 PyInstaller 在静态分析过程中无法自动检测到的。

    • 通常情况下,PyInstaller 通过静态分析 Python 代码,找出所有导入的模块并将它们包括在打包的应用程序中。然而,有时导入是动态的,例如使用 __import__importlib 或其他动态导入方法,这些情况下 PyInstaller 可能无法自动检测到这些模块。这时,就需要手动指定这些模块,将它们添加到 hiddenimports 列表中。

 Spec 文件相关命令

在使用 PyInstaller 打包 Python 应用程序时,spec 文件(specification file)用来定义打包过程的配置。

PyInstaller 使用一个规格文件(spec 文件)来控制构建过程。通过修改 spec 文件,你可以精确地控制打包过程中的各种选项和行为。

生成 spec 文件:

pyinstaller --onefile myscript.py --specpath

生成的 spec 文件可以进行手动编辑,然后使用以下命令重新生成可执行文件:

pyinstaller myscript.spec

如果你打包产生的spec文件里的hiddenimports内已经包含了你代码中需要的数据文件,那就不需要进行修改了。如果没有包含,则进行如下图所示的修改:

(6)然后执行下列命令,使用我们修改好的spec文件进行再次打包。

pyinstaller main.spec

双击运行exe文件,

OK,程序正常运行起来了。

  • 23
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值