将Python开发的Window应用打包成exe的流程步骤

 更新时间:2026年05月19日 09:19:13   作者:江上清风山间明月  
文章介绍了将Python应用打包成exe安装程序的详细步骤,首先,使用PyInstaller打包应用,并指定相关参数,然后,使用InnoSetup创建安装程序,编写安装脚本并编译生成,接着,处理文件路径问题,确保在不同环境兼容,最后,测试安装程序,需要的朋友可以参考下

步骤1:使用PyInstaller打包Python应用

安装PyInstaller

pip install pyinstaller

打包应用为目录结构(确保包含所有依赖文件):

pyinstaller --windowed --add-data "data/*;data" --add-data "tools/*;tools" --add-data "*.pdf;." main.py
  • --windowed:不显示控制台窗口(适用于GUI应用)。
  • --add-data "源路径;目标路径":将文件或目录添加到打包结果中,目标路径相对于打包目录。

验证输出

  • 打包后的文件位于 dist/main/ 目录,包含 main.exe 和所有添加的文件。

步骤2:使用Inno Setup创建安装程序

下载并安装Inno Setup

  • 官网:https://jrsoftware.org/isdl.php

编写安装脚本(.iss文件)

[Setup]
AppName=MyApp
AppVersion=1.0
DefaultDirName={autopf}\MyApp
DefaultGroupName=MyApp
OutputDir=.\Output
OutputBaseFilename=MyApp_Setup
Compression=lzma
SolidCompression=yes
[Files]
Source: "dist\main\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
[Icons]
Name: "{group}\MyApp"; Filename: "{app}\main.exe"
Name: "{commondesktop}\MyApp"; Filename: "{app}\main.exe"
  • [Setup]:配置安装基本信息,如应用名称、版本和默认安装路径。
  • [Files]:指定需要打包的文件和目录。
  • [Icons]:创建开始菜单和桌面快捷方式。

编译脚本生成安装程序

  • 使用Inno Setup打开脚本,点击 Build > Compile,生成的 MyApp_Setup.exe 位于 Output 目录。

步骤3:处理文件路径问题

在代码中动态定位文件路径,确保开发与打包后环境兼容:

import sys
import os

def get_resource_path(relative_path):
    if getattr(sys, 'frozen', False):
        base_path = sys._MEIPASS  # PyInstaller临时解压目录(单文件模式)
    else:
        base_path = os.path.dirname(os.path.abspath(__file__))
    return os.path.join(base_path, relative_path)

# 示例:访问配置文件
config_path = get_resource_path(os.path.join('data', 'config.ini'))

步骤4:测试安装程序

  1. 运行生成的安装程序,选择不同路径安装。
  2. 检查安装目录文件是否完整。
  3. 启动应用,确认所有功能正常。

可选优化

  • 依赖检测:若应用需VC++运行库,可在Inno Setup中添加检测安装逻辑。
  • 文件权限:如需修改配置文件,考虑将用户数据存于 %APPDATA%
  • 版本更新:在安装脚本中处理旧版本卸载。

最终结果

用户将获得一个标准的Windows安装程序(.exe),可自定义安装路径并自动创建快捷方式,所有依赖文件将被正确部署。

结束语

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!

以上就是将Python开发的Window应用打包成exe的流程步骤的详细内容,更多关于Python Window应用打包成exe的资料请关注脚本之家其它相关文章!

相关文章

  • 探索Python Furl高性能URL构建解析和操作功能实例

    探索Python Furl高性能URL构建解析和操作功能实例

    本文将提供关于Python Furl的全面指南,包括安装和配置、基本概念、URL解析、URL构建、查询参数操作、片段处理、实际应用场景以及丰富的示例代码
    2024-01-01
  • Python的Pandas库中使用DataFrame筛选和删除含特定值的行与列

    Python的Pandas库中使用DataFrame筛选和删除含特定值的行与列

    Pandas是一个强大的数据处理库,提供了各种功能来操作和处理数据,这篇文章主要给大家介绍了关于Python的Pandas库中使用DataFrame筛选和删除含特定值的行与列的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • Python3实现从排序数组中删除重复项算法分析

    Python3实现从排序数组中删除重复项算法分析

    这篇文章主要介绍了Python3实现从排序数组中删除重复项算法,结合3个完整实例形式分析了Python3针对排序数组的遍历、去重、长度计算等相关操作技巧,需要的朋友可以参考下
    2019-04-04
  • python绘制无向图度分布曲线示例

    python绘制无向图度分布曲线示例

    今天小编就为大家分享一篇python绘制无向图度分布曲线示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 基于Python制作短信发送程序

    基于Python制作短信发送程序

    这篇文章主要为大家详细介绍了如何利用Python制作短信发送程序,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2023-01-01
  • python3在各种服务器环境中安装配置过程

    python3在各种服务器环境中安装配置过程

    这篇文章主要介绍了python3在各种服务器环境中安装配置过程,源码包编译安装步骤详解,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • python编程PyQt5创建按钮及触发点击事件示例解析

    python编程PyQt5创建按钮及触发点击事件示例解析

    这篇文章主要为大家介绍了python编程使用PyQt5如何创建按钮及触发点击事件的示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • 利用python爬取城市公交站点

    利用python爬取城市公交站点

    这篇文章主要介绍了利用Python爬虫爬取城市公交站点的数据,文中的代码具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-12-12
  • Python如何在for循环中同时使用两个变量与两个控制条件

    Python如何在for循环中同时使用两个变量与两个控制条件

    Python是一种广泛使用的编程语言,其提供了许多强大的方法来处理代码,Python for循环是其中一种非常有用的方法,下面这篇文章主要给大家介绍了关于Python如何在for循环中同时使用两个变量与两个控制条件的相关资料,需要的朋友可以参考下
    2024-03-03
  • 最新python 字符串数组互转问题

    最新python 字符串数组互转问题

    这篇文章主要介绍了最新python 字符串数组互转问题,主要介绍了字符串转list数组问题和list数组转字符串问题,本文结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-02-02

最新评论