Python打包成exe常用的四种方法小结

2025-09-28 13:50

本文主要是介绍Python打包成exe常用的四种方法小结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非...

python脚本打包成可执行文件(.exe)是分发Python应用程序的常见方式。以下是几种常用的方法:

一.PyInstaller1

PyInstaller 是最常用的工具之一,支持跨平台(WindowsMACOS、linux)。它可以将Python脚本打包成单个可执行文件,并且支持打包依赖项。

1.安装:

pip install pyinstaller

2. PyInstaller常用参数下面是pyinstaller的常用参数:

  1. --name : 指定可执行文件名称。
  2. --specpath: 指定spec文件的生成目录,默认为当前目录。
  3. -F, --onefile: 将整个应用程序打包到单个可执行文件中。
  4. -D, --onedir: 生成一个目录,包含多个文件。
  5. --add-data 、 --add-binary: 在构建中插入额外的数据或二进制文件,可用于绑定配置文件、示例或其他非代码数据。
  6. --exclude-module: 排除某些模块。
  7. -d, --debug: 提供debug输出。
  8. -w, --windowed, --noconsole: 关闭控制台窗口(仅对Windows有效)。
  9. -c, --nowindowed, --console: 使用命令行窗口(仅对Windows有效)。
  10. -i: 设置应用图标。

在项目根目录,打开命令行窗口执行命令:pyinstaller 项目入口函数 即可进行打包,主要生成以下三个内容:

  1. *.spec 文件
  2. build/ 文件夹:用于构建可执行文件
  3. dist/ 文件夹:包含应用程序的所有依赖项和可执行文件

3.Flask项目打包为exe

在项目根目录执行如下命令,创建my_app.spec文件,内容如下:main.py为python项目入口文件,设置显示控制台:

$ pyi-makespec -F -c main.py 
# -*- mode: python ; coding: utf-8 -*-

'''
在打包导入某些模块时,常会出现"RecursionError: maximum recursion depth exceeded"的错误,
这可能是打包时出现了大量的递归超出了python预设的递归深度。因此需要在spec文件上添加递归深度的设置,设置一个足够大的值来保证打包的进行,即
'''
import sys
sys.setrecursionlimit(6000)
block_cipher = None
'''
需要修改pathex的内容,写上所有py文件,和入口文件在一个目录的不用在前面加地址,否则要加绝对地址

datas中是资源文件夹的所处位置,写法类似于python元组
第一个参数:Python中的资源文件等非py类型文件的路径
第二个参数:打包后路径,要和路径中的文件夹名称相同

excludes中是无需导入的第三方库,直接写第三库的名称即可
'python''


a = Analysis(
    ['main.py'], # flask入口
    pathex=['login.py','tool.py','ExcelmysqlToolModify.py'],
    binaries=[],    
    datas=[("E:/**/templates","/templates"),("E:/**/static","/static")],# 将资源的绝对路径转换为你打包的exe的相对路径
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=['opencv-python','beautifulsoup4'],   #第三库的名称
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
  android  a.scripts,
    a.binaries,
    a.zipfiles,
    a.datas,
    [],
    name='my_flask_app', #名字自己定
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=Nandroidone,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
    icon='D:\\images\\logo.ico', # 程序图标,具体路径
)

4.开始打包

运行以下命令来使用PyInstaller根据my_app.spec文件打包flask应用程序:

pyinstaller main.spec

二.cx_Freeze

cx_Freeze 是另一个流行的打包工具,支持跨平台。它可以将Python脚本打包成可执行文件,并且支持打包依赖项。

1.安装: 

cxfreeze your_script.py --target-dir dist

2. 使用:

cxfreeze your_script.py --target-dir dist

三.Py2exe

Py2exe 是一个专门用于将Python脚本打包成Windows可执行文件的工具。

1.安装:

pip install py2exe

2.使用:创建一个 setup.py 文件:

from distutils.core import setup
import py2exe

setup(console=['your_script.py'])

 3.然后运行:

python setup.py py2exe

 打包后的文android件会生成在 dist 目录下。

四.Nuitka

Nuitka 是一个Python到C++编译器,它可以将Python脚本编译成可执行文件。与上述工具不同,Nuitka 会将PytChina编程hon代码编译成C++代码,然后再编译成可执行文件,因此性能可能会有所提升。

1.安装:

pip install nuitka

2.使用:

nuitka --standalone --onefile your_script.py
 nuitka --follow-imports --show-progress --mingw64 main.py
 --follow-imports  # 打包import的文件
 --standalone  # 脱离python环境
 --show-progress  # 展示打包详情的控制台输出
 --include-package=requests  # 将requests包打包进exe
 --mingw64  # 指定编译器
 --plugin-enable=requests  # 导入第三方包
 -o wenshu.exe # 指定exe名字
 --output-dir=  # 指定打包后的路径,默认当前路径
 --windows-disable-console  # 去掉黑窗口
 --windows-icon=  # 指定图标
 
 nuitka  --plugin-list  # 查看可用的插件

到此这篇关于Python打包成exe常用的四种方法的文章就介绍到这了,更多相关Python打包成exe内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于Python打包成exe常用的四种方法小结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1156070

相关文章

java中ssh2执行多条命令的四种方法

《java中ssh2执行多条命令的四种方法》本文主要介绍了java中ssh2执行多条命令的四种方法,包括分号分隔、管道分隔、EOF块、脚本调用,可确保环境配置生效,提升操作效率,具有一定的参考价值,感... 目录1 使用分号隔开2 使用管道符号隔开3 使用写EOF的方式4 使用脚本的方式大家平时有没有遇到自

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

在Ubuntu上打不开GitHub的完整解决方法

《在Ubuntu上打不开GitHub的完整解决方法》当你满心欢喜打开Ubuntu准备推送代码时,突然发现终端里的gitpush卡成狗,浏览器里的GitHub页面直接变成Whoathere!警告页面... 目录一、那些年我们遇到的"红色惊叹号"二、三大症状快速诊断症状1:浏览器直接无法访问症状2:终端操作异常

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

Python sys模块的使用及说明

《Pythonsys模块的使用及说明》Pythonsys模块是核心工具,用于解释器交互与运行时控制,涵盖命令行参数处理、路径修改、强制退出、I/O重定向、系统信息获取等功能,适用于脚本开发与调试,需... 目录python sys 模块详解常用功能与代码示例获取命令行参数修改模块搜索路径强制退出程序标准输入

Python pickle模块的使用指南

《Pythonpickle模块的使用指南》Pythonpickle模块用于对象序列化与反序列化,支持dump/load方法及自定义类,需注意安全风险,建议在受控环境中使用,适用于模型持久化、缓存及跨... 目录python pickle 模块详解基本序列化与反序列化直接序列化为字节流自定义对象的序列化安全注

Python之变量命名规则详解

《Python之变量命名规则详解》Python变量命名需遵守语法规范(字母开头、不使用关键字),遵循三要(自解释、明确功能)和三不要(避免缩写、语法错误、滥用下划线)原则,确保代码易读易维护... 目录1. 硬性规则2. “三要” 原则2.1. 要体现变量的 “实际作用”,拒绝 “无意义命名”2.2. 要让

python中的高阶函数示例详解

《python中的高阶函数示例详解》在Python中,高阶函数是指接受函数作为参数或返回函数作为结果的函数,下面:本文主要介绍python中高阶函数的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录1.定义2.map函数3.filter函数4.reduce函数5.sorted函数6.自定义高阶函数

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个