一文看懂Python封装成可带参数的EXE安装包

本文介绍如何将Python项目封装成可带参数的EXE安装包。通过setup.py打包源码为msi安装包,用PyInstaller整合msi安装程序和配置脚本,实现自动化部署和环境检测。详细步骤包括编写setup.py、Example.py以及使用PyInstaller生成最终的exe文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府
今天小编就为大家分享一篇Python封装成可带参数的EXE安装包实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
最近有一个小项目,有如下的需求:

将某几个源码文件夹进行打包,文件夹内有py文件、dll文件、exe文件等各种文件类型

打包生成的安装包,在进行安装的时候,应该能够带有参数,对配置文件进行修改配置

安装过程中,可以配置系统环境变量

能够检测环境,提示安装依赖包

整个过程要可以自动化,能够大量部署

综合考虑后,决定以下几个步骤完成:

用setup.py将源码文件夹都打包成msi安装包,这样可以使用msiexec进行静默安装

setup.py可以提示用户安装依赖包,否则安装失败

再编写一个py文件,用来静默安装msi安装包,并配置系统环境变量,接受安装参数去修改配置文件的属性

最后使用pyinstaller将所有都打包成exe文件

先来编写setup.py文件:

# coding=utf-8
from distutils.core import setup
import os
  
  
def get_all_dir(path):
  """
    获取指定路径下的所有文件
  """
  all_file = []
  for dirpath, dirnames, filenames in os.walk(path):
    for filename in filenames:
      all_file.append(dirpath)
  return all_file
  
  
if __name__ == '__main__':
  all_file = get_all_dir('A') + get_all_dir('B') # 获取相对路径下A和B两个文件夹下的所有文件
  setup(name='Example', # 所要安装的软件名
     version="1.0", # 版本
     description="This is example", # 对所安装软件的描述
     author="author", # 作者
     author_email='my email', # 邮箱
     packages=all_file, # 要打包的文件
     package_data={
   
   '': ['*.*']}, # 所有文件类型都打包
     classifiers=[
       'Development Status :: 5 - Production/Stable',
       'Operating System :: Microsoft :: Windows',
       'Natural Language :: Chinese (Simplified)',
       'Programming Language :: Python',
       'Programming Language :: Python :: 2.7',
       
### Python入门教程 #### 一、Python简介 作为一种高级编程语言Python因其简洁清晰的语法而广受欢迎。这种特性使得它为初学者的理想选择[^1]。 #### 二、基础语法规则 ##### 变量与数据类型 变量无需声明即可直接赋值使用,在Python中支持多种基本的数据类型: - 整数(int): 表示整数值, 如 `a = 10`。 - 浮点数(float): 表示带有小数部分的实数, 如 `b = 3.14`。 - 字符串(str): 使用单引号或双引号包裹的一系列字符, 如 `c = "hello"` 或者 `d = 'world'`。 - 布尔(bool): True 和 False 是唯一的两个布尔值。 ```python integer_example = 123 float_example = 123.456 string_example = "example" boolean_example = True ``` ##### 控制结构 控制流语句用于改变程序执行顺序,主要包括条件判断(if/elif/else)和循环(for/while): ```python if condition: do_something() elif another_condition: do_another_thing() else: final_action() for item in iterable_object: process(item) while expression_is_true: keep_doing_this() ``` ##### 函数定义 函数是一段具有特定功能可重复使用的代码块: ```python def function_name(parameters): """文档字符串""" # 执行逻辑... return result ``` #### 三、核心概念解析 ##### 面向对象编程(OOP) 面向对象是一种重要的编程范式,通过类(class)来创建自定义类型的实例(object),从而实现属性(attribute)和方法(method)封装。 ```python class ClassName: def __init__(self, param1, param2): self.attr1 = param1 self.attr2 = param2 def method(self): pass ``` ##### 异常处理机制 异常是指在程序运行过程中发生的错误情况,可以利用try-except-finally语句捕获并妥善处理这些意外状况。 ```python try: risky_operation() except SpecificException as e: handle_exception(e) finally: cleanup_resources() ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值