Python代码打包成exe应用

目录

一、前期准备

二、Pyinstaller打包步骤

Pyinstaller参数详解

三、测试

[Spec 文件相关命令](#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,程序正常运行起来了。

相关推荐
w2sfot26 分钟前
Passing Arguments as an Object in JavaScript
开发语言·javascript·ecmascript
郝学胜-神的一滴41 分钟前
避免使用非const全局变量:C++中的最佳实践 (C++ Core Guidelines)
开发语言·c++·程序人生
我没想到原来他们都是一堆坏人1 小时前
(未完待续...)如何编写一个用于构建python web项目镜像的dockerfile文件
java·前端·python
搞一搞汽车电子1 小时前
S32K3平台eMIOS 应用说明
开发语言·驱动开发·笔记·单片机·嵌入式硬件·汽车
总有刁民想爱朕ha2 小时前
车牌模拟生成器:Python3.8+Opencv代码实现与商业应用前景(C#、python 开发包SDK)
开发语言·python·数据挖掘
小菜全2 小时前
uniapp新增页面及跳转配置方法
开发语言·前端·javascript·vue.js·前端框架
人衣aoa2 小时前
Python编程基础(八) | 类
开发语言·python
晚云与城2 小时前
今日分享:C++ Stack和queue(栈与队列)
开发语言·c++
小莞尔2 小时前
【51单片机】【protues仿真】基于51单片机停车场的车位管理系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
张烫麻辣亮。2 小时前
golang-gin包
开发语言·golang·gin