欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > Python打包成exe的常用的几种方法

Python打包成exe的常用的几种方法

2025/11/10 21:00:53 来源:https://blog.csdn.net/m0_67309719/article/details/145960105  浏览:    关键词:Python打包成exe的常用的几种方法

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

一. PyInstaller1

        PyInstaller 是最常用的工具之一,支持跨平台(Windows、macOS、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中是无需导入的第三方库,直接写第三库的名称即可
'''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,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=None,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 py2exesetup(console=['your_script.py'])

 3.然后运行:

python setup.py py2exe

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

四. Nuitka

        Nuitka 是一个Python到C++编译器,它可以将Python脚本编译成可执行文件。与上述工具不同,Nuitka 会将Python代码编译成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  # 查看可用的插件

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词