PyInstaller将Python打包成windows可执行的exe(细致版)

 更新时间:2026年01月31日 09:42:16   作者:小软件大世界  
在开发 Python 应用程序时,有时我们需要将脚本打包成独立的可执行文件(.exe),下面小编就来和大家详细介绍一下具体步骤,有需要的小伙伴可以了解下

在开发 Python 应用程序时,有时我们需要将脚本打包成独立的可执行文件(.exe),以便于在没有安装 Python 环境的计算机上运行。本文将介绍如何使用 PyInstaller 工具将 Python 本打包成 Windows 可执行文件。

1. 安装 PyInstaller

首先,你需要安装 PyInstaller。可以通过 pip 来安装:

pip install pyinstaller

2. 准备你的 Python 脚本

假设你有一个名为 myapp.py 的 Python 脚本,内容如下:

import tkinter as tk

def on_button_click():
    label.config(text="Hello, World!")

root = tk.Tk()
root.title("My App")

label = tk.Label(root, text="Welcome to My App")
label.pack(pady=20)

button = tk.Button(root, text="Click Me", command=on_button_click)
button.pack(pady=10)

root.mainloop()

这个脚本使用 tkinter 库创建了一个简单的 GUI 应用程序。

3. 使用 PyInstaller 打包脚本

3.1 基本打包

打开命令行或终端,导航到包含 myapp.py 的目录,然后运行以下命令:

pyinstaller myapp.py

这将生成一个 dist 目录,其中包含可执行文件和其他必要的文件。

3.2 单文件模式

为了生成一个单独的可执行文件,可以使用 --onefile 参数:

pyinstaller --onefile myapp.py

3.3 设置图标

如果你希望给生成的可执行文件设置图标,可以使用 --icon 参数。假设你有一个名为 myicon.ico 的图标文件:

pyinstaller --onefile --icon=myicon.ico myapp.py

3.4 隐藏控制台窗口

对于 GUI 应用程序,你可能不希望显示控制台窗口。可以使用 --noconsole 参数来隐藏控制台窗口:

pyinstaller --onefile --noconsole --icon=myicon.ico myapp.py

3.5 添加数据文件

如果你的应用程序需要额外的数据文件,比如配置文件或资源文件,可以使用 --add-data 参数。例如,假设你有一个名为 config.ini 的配置文件:

pyinstaller --onefile --noconsole --icon=myicon.ico --add-data "config.ini;." myapp.py

这里的 config.ini;. 表示将 config.ini 文件复制到可执行文件所在目录的根目录下。

4. 使用 .spec 文件进行高级配置

对于更复杂的项目,你可能需要更多的控制权。PyInstaller 提供了 .spec 文件来配置构建过程。

4.1 生成 .spec 文件

首次运行 PyInstaller 时,它会自动生成一个 .spec 文件。例如:

pyinstaller myapp.py

这将在当前目录下生成一个 myapp.spec 文件。

4.2 编辑 .spec 文件

打开 myapp.spec 文件,你可以看到类似以下内容:

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

a = Analysis(
    ['myapp.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(
    pyz,
    a.scripts,
    [],
    exclude_binaries=True,
    name='myapp',
    debug=False,
    strip=False,
    upx=True,
    console=False,
    icon='myicon.ico',
)
coll = COLLECT(
    exe,
    a.binaries,
    a.zipfiles,
    a.datas,
    strip=False,
    upx=True,
    upx_exclude=[],
    name='myapp',
)

你可以在这个文件中进行各种配置,例如添加数据文件、排除不必要的模块等。

4.3 使用 .spec 文件构建

保存并关闭 .spec 文件后,使用以下命令进行构建:

pyinstaller myapp.spec

5.创建虚拟环境,减少打包文件文件大小

一般打包时,会将一些不必要的库顺带一并打包进程序中,这会造成打包后的文件非常大,因此可以通过安装一个虚拟环境来进行打包。

复制这个目录。

然后,我们需要安装两个依赖包:

pip install virtualenv
pip install virtualenvwrapper-win

如果网络不佳,可使用国内的镜像库进行安装:

pip install virtualenv -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple some-package

然后创建虚拟环境:

mkvirtualenv -p="C:\Users\jyw\AppData\Local\Programs\Python\Python311\python.exe" pyenv311

打开这个虚拟环境:

workon pyenv311

可以看到里面只有基本的库。

然后我们去运行py文件,安装缺失的必要库,运行成功后再打包即可。

若要删除虚拟环境,使用 rmvirtualenv 命令删除虚拟环境:例如,要删除名为 pyenv311 的虚拟环境,可以运行以下命令:

rmvirtualenv pyenv311

6. 测试生成的可执行文件

构建完成后,进入 dist 目录,运行生成的可执行文件:

cd dist
myapp.exe

确保应用程序能够正常运行,并且所有功能都能正常使用。

7. 分发可执行文件

将 dist 目录中的可执行文件及其依赖文件(如果有)打包成一个压缩包,发给需要用的人即可啦!!

到此这篇关于PyInstaller将Python打包成windows可执行的exe(细致版)的文章就介绍到这了,更多相关PyInstaller打包Python内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Python中的join()函数的用法

    详解Python中的join()函数的用法

    这篇文章主要介绍了详解Python中的join()函数的用法,join()函数主要用来拼接字符串,是Python学习当中的基础知识,需要的朋友可以参考下
    2015-04-04
  • Python Pandas处理时间序列的三大核心工具详解

    Python Pandas处理时间序列的三大核心工具详解

    时间序列数据是物联网、金融、气象等领域的核心资产,Pandas库为时间序列分析提供了三大核心工具,本文将通过真实场景案例,展示如何用三行代码解决复杂的时间序列问题,感兴趣的小伙伴可以了解下
    2026-01-01
  • Linux中安装Python的交互式解释器IPython的教程

    Linux中安装Python的交互式解释器IPython的教程

    IPython是一种基于Python的Shell,由于有了Python编程语言的支撑,而比一般的Shell更加强大.下面就来看一下Linux中安装Python的交互式解释器IPython的教程
    2016-06-06
  • Python之np.where()如何替换缺失值

    Python之np.where()如何替换缺失值

    这篇文章主要介绍了Python中的np.where()如何替换缺失值问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python Django网页界面协同过滤推荐算法实现商品管理与推荐

    Python Django网页界面协同过滤推荐算法实现商品管理与推荐

    商品管理与推荐系统,本系统使用Python作为主要开发语言,前端采用HTML、CSS、BootStrap等技术搭建显示界面,后端采用Django框架处理用户的请求响应
    2023-11-11
  • Python实现按目录层级输出文件名并保存为excel

    Python实现按目录层级输出文件名并保存为excel

    当我们发现电脑的内存很满,或平时工作中文件夹管理不清晰,导致里面的文件数据很杂乱,查找很不方便,一个一个文件夹去看去找然后删除又很浪费时间。本文将介绍如何利用Python实现按目录层级输出文件名并保存为excel,需要的可以参考一下
    2022-02-02
  • 详解Python 关联规则分析

    详解Python 关联规则分析

    这篇文章主要介绍了Python 关联规则分析的相关资料,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-03-03
  • Python处理excel与txt文件详解

    Python处理excel与txt文件详解

    大家好,本篇文章主要讲的是Python处理excel与txt文件详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • python实战小游戏之考验记忆力

    python实战小游戏之考验记忆力

    本篇文章介绍了用python编写的曾经风靡的考验记忆力的小游戏,详细介绍了整个思路和过程以及代码,通读本篇对大家的学习或工作具有一定的价值,需要的朋友可以参考下
    2021-09-09
  • Django实现drf搜索过滤和排序过滤

    Django实现drf搜索过滤和排序过滤

    当我们需要对后台的数据进行过滤的时候,drf有两种,搜索过滤和排序过滤。本文就详细的介绍这两种的实现,感兴趣的可以了解一下
    2021-06-06

最新评论