本文主要是介绍Python打包成exe常用的四种方法小结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非...
将python脚本打包成可执行文件(.exe)是分发Python应用程序的常见方式。以下是几种常用的方法:
一.PyInstaller1
PyInstaller 是最常用的工具之一,支持跨平台(Windows、MACOS、linux)。它可以将Python脚本打包成单个可执行文件,并且支持打包依赖项。
1.安装:
pip install pyinstaller
2. PyInstaller常用参数下面是pyinstaller的常用参数:
- --name : 指定可执行文件名称。
- --specpath: 指定spec文件的生成目录,默认为当前目录。
- -F, --onefile: 将整个应用程序打包到单个可执行文件中。
- -D, --onedir: 生成一个目录,包含多个文件。
- --add-data 、 --add-binary: 在构建中插入额外的数据或二进制文件,可用于绑定配置文件、示例或其他非代码数据。
- --exclude-module: 排除某些模块。
- -d, --debug: 提供debug输出。
- -w, --windowed, --noconsole: 关闭控制台窗口(仅对Windows有效)。
- -c, --nowindowed, --console: 使用命令行窗口(仅对Windows有效)。
- -i: 设置应用图标。
在项目根目录,打开命令行窗口执行命令:pyinstaller 项目入口函数 即可进行打包,主要生成以下三个内容:
- *.spec 文件
- build/ 文件夹:用于构建可执行文件
- 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常用的四种方法小结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!