Python打包成exe常用的四種方法小結(jié)
將Python腳本打包成可執(zhí)行文件(.exe)是分發(fā)Python應(yīng)用程序的常見方式。以下是幾種常用的方法:
一.PyInstaller1
PyInstaller 是最常用的工具之一,支持跨平臺(tái)(Windows、macOS、Linux)。它可以將Python腳本打包成單個(gè)可執(zhí)行文件,并且支持打包依賴項(xiàng)。
1.安裝:
pip install pyinstaller
2. PyInstaller常用參數(shù)下面是pyinstaller的常用參數(shù):
- --name : 指定可執(zhí)行文件名稱。
- --specpath: 指定spec文件的生成目錄,默認(rèn)為當(dāng)前目錄。
- -F, --onefile: 將整個(gè)應(yīng)用程序打包到單個(gè)可執(zhí)行文件中。
- -D, --onedir: 生成一個(gè)目錄,包含多個(gè)文件。
- --add-data 、 --add-binary: 在構(gòu)建中插入額外的數(shù)據(jù)或二進(jìn)制文件,可用于綁定配置文件、示例或其他非代碼數(shù)據(jù)。
- --exclude-module: 排除某些模塊。
- -d, --debug: 提供debug輸出。
- -w, --windowed, --noconsole: 關(guān)閉控制臺(tái)窗口(僅對(duì)Windows有效)。
- -c, --nowindowed, --console: 使用命令行窗口(僅對(duì)Windows有效)。
- -i: 設(shè)置應(yīng)用圖標(biāo)。
在項(xiàng)目根目錄,打開命令行窗口執(zhí)行命令:pyinstaller 項(xiàng)目入口函數(shù) 即可進(jìn)行打包,主要生成以下三個(gè)內(nèi)容:
- *.spec 文件
- build/ 文件夾:用于構(gòu)建可執(zhí)行文件
- dist/ 文件夾:包含應(yīng)用程序的所有依賴項(xiàng)和可執(zhí)行文件
3.Flask項(xiàng)目打包為exe
在項(xiàng)目根目錄執(zhí)行如下命令,創(chuàng)建my_app.spec文件,內(nèi)容如下:main.py為python項(xiàng)目入口文件,設(shè)置顯示控制臺(tái):
$ pyi-makespec -F -c main.py
# -*- mode: python ; coding: utf-8 -*-
'''
在打包導(dǎo)入某些模塊時(shí),常會(huì)出現(xiàn)"RecursionError: maximum recursion depth exceeded"的錯(cuò)誤,
這可能是打包時(shí)出現(xiàn)了大量的遞歸超出了python預(yù)設(shè)的遞歸深度。因此需要在spec文件上添加遞歸深度的設(shè)置,設(shè)置一個(gè)足夠大的值來保證打包的進(jìn)行,即
'''
import sys
sys.setrecursionlimit(6000)
block_cipher = None
'''
需要修改pathex的內(nèi)容,寫上所有py文件,和入口文件在一個(gè)目錄的不用在前面加地址,否則要加絕對(duì)地址
datas中是資源文件夾的所處位置,寫法類似于python元組
第一個(gè)參數(shù):Python中的資源文件等非py類型文件的路徑
第二個(gè)參數(shù):打包后路徑,要和路徑中的文件夾名稱相同
excludes中是無需導(dǎo)入的第三方庫,直接寫第三庫的名稱即可
'''
a = Analysis(
['main.py'], # flask入口
pathex=['login.py','tool.py','ExcelMySQLToolModify.py'],
binaries=[],
datas=[("E:/**/templates","/templates"),("E:/**/static","/static")],# 將資源的絕對(duì)路徑轉(zhuǎn)換為你打包的exe的相對(duì)路徑
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', # 程序圖標(biāo),具體路徑
)
4.開始打包
運(yùn)行以下命令來使用PyInstaller根據(jù)my_app.spec文件打包flask應(yīng)用程序:
pyinstaller main.spec
二.cx_Freeze
cx_Freeze 是另一個(gè)流行的打包工具,支持跨平臺(tái)。它可以將Python腳本打包成可執(zhí)行文件,并且支持打包依賴項(xiàng)。
1.安裝:
cxfreeze your_script.py --target-dir dist
2. 使用:
cxfreeze your_script.py --target-dir dist
三.Py2exe
Py2exe 是一個(gè)專門用于將Python腳本打包成Windows可執(zhí)行文件的工具。
1.安裝:
pip install py2exe
2.使用:創(chuàng)建一個(gè) setup.py 文件:
from distutils.core import setup import py2exe setup(console=['your_script.py'])
3.然后運(yùn)行:
python setup.py py2exe
打包后的文件會(huì)生成在 dist 目錄下。
四.Nuitka
Nuitka 是一個(gè)Python到C++編譯器,它可以將Python腳本編譯成可執(zhí)行文件。與上述工具不同,Nuitka 會(huì)將Python代碼編譯成C++代碼,然后再編譯成可執(zhí)行文件,因此性能可能會(huì)有所提升。
1.安裝:
pip install nuitka
2.使用:
nuitka --standalone --onefile your_script.py
nuitka --follow-imports --show-progress --mingw64 main.py --follow-imports # 打包import的文件 --standalone # 脫離python環(huán)境 --show-progress # 展示打包詳情的控制臺(tái)輸出 --include-package=requests # 將requests包打包進(jìn)exe --mingw64 # 指定編譯器 --plugin-enable=requests # 導(dǎo)入第三方包 -o wenshu.exe # 指定exe名字 --output-dir= # 指定打包后的路徑,默認(rèn)當(dāng)前路徑 --windows-disable-console # 去掉黑窗口 --windows-icon= # 指定圖標(biāo) nuitka --plugin-list # 查看可用的插件
到此這篇關(guān)于Python打包成exe常用的四種方法的文章就介紹到這了,更多相關(guān)Python打包成exe內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django+uni-app實(shí)現(xiàn)數(shù)據(jù)通信中的請(qǐng)求跨域的示例代碼
這篇文章主要介紹了Django+uni-app實(shí)現(xiàn)數(shù)據(jù)通信中的請(qǐng)求跨域的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
一文帶你掌握Pyecharts地理數(shù)據(jù)可視化的方法
這篇文章主要介紹了一文帶你掌握Pyecharts地理數(shù)據(jù)可視化的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Django 實(shí)現(xiàn)xadmin后臺(tái)菜單改為中文
今天小編就為大家分享一篇Django 實(shí)現(xiàn)xadmin后臺(tái)菜單改為中文,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11
python實(shí)現(xiàn)csdn全部博文下載并轉(zhuǎn)PDF
我們學(xué)習(xí)編程,在學(xué)習(xí)的時(shí)候,會(huì)有想把有用的知識(shí)點(diǎn)保存下來,我們可以把知識(shí)點(diǎn)的內(nèi)容爬下來轉(zhuǎn)變成pdf格式,方便我們拿手機(jī)可以閑時(shí)翻看,是很方便的,本文就介紹一下如何實(shí)現(xiàn)2021-06-06
講解Python中運(yùn)算符使用時(shí)的優(yōu)先級(jí)
這篇文章主要介紹了講解Python中運(yùn)算符使用時(shí)的優(yōu)先級(jí),是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05

