使用pyinstaller打包py文件的實現(xiàn)步驟
1、是什么
PyInstaller 是一個用于將 Python 腳本打包成獨立可執(zhí)行文件的工具。它支持跨平臺打包,可以在 Windows、macOS 和 Linux 系統(tǒng)上使用。PyInstaller 會自動處理腳本的依賴項,并將它們打包到一個可執(zhí)行文件或一個包含所有文件的目錄中。
功能特點
- 跨平臺支持:可以在 Windows、macOS 和 Linux 系統(tǒng)上使用。
- 自動處理依賴項:自動分析腳本的依賴項,并將它們打包到可執(zhí)行文件中。
- 生成單個可執(zhí)行文件:可以將所有依賴項打包到一個單獨的可執(zhí)行文件中,方便分發(fā)。
- 支持多種打包選項:可以指定窗口化應(yīng)用、隱藏控制臺窗口等選項。
2.怎么用
2.1基本用法
1. 生成可執(zhí)行文件:
在終端或命令提示符中導(dǎo)航到包含 Python 腳本的目錄,然后運行以下命令:
pyinstaller script_name.py
這將生成一個 `dist` 目錄,其中包含可執(zhí)行文件。
2. 生成單個可執(zhí)行文件:
如果想將所有依賴項打包到一個單獨的可執(zhí)行文件中,可以使用 `-F` 或 `--onefile` 選項:
pyinstaller -F script_name.py
3. 指定輸出目錄:
如果想指定輸出目錄,可以使用 `-o` 或 `--distpath` 選項:
pyinstaller -F -o output_directory script_name.py
4. 隱藏控制臺窗口:
如果打包的是 GUI 應(yīng)用程序,并且不想顯示控制臺窗口,可以使用 `-w` 或 `--windowed` 選項:
pyinstaller -F -w script_name.py
2.2高級選項
- 添加圖標(biāo):可以使用 `--icon` 選項為可執(zhí)行文件添加圖標(biāo):
pyinstaller -F --icon=icon.ico script_name.py
- 指定臨時文件目錄:可以使用 `--workpath` 選項指定臨時文件目錄:
pyinstaller -F --workpath=build_directory script_name.py
- 排除不需要的模塊:可以使用 `--exclude-module` 選項排除不需要的模塊:
pyinstaller -F --exclude-module=module_name script_name.py
3、示例
3.1 單個文件打包
(1)打包命令:
在終端,main.py文件所在文件夾和環(huán)境
pyinstaller -F main.py
打包成功
(2)修改main.spec配置文件
中括號中是你的py文件,pathex中是你文件躲在的絕對路徑
(3)執(zhí)行main.spec配置文件
pyinstaller main.spec
3.2 多個文件的示例
(1)與單個文件相同
(2)修改spec配置文件
① 所有需要的py文件和絕對路徑
② 所有資源存在data
data是一個列表,數(shù)據(jù)存放以二元組形式存放,前面的是數(shù)據(jù)名稱,后面的是相對于predict_tinajin.py當(dāng)前目錄的路徑。
③ 最好在exe文件所在目錄打開終端運行exe文件,這樣即使報錯也不會一閃而過。一般是報錯或者exe執(zhí)行完終端界面就會消失,在所在路徑的地方運行就不會
4、關(guān)于spec更詳細(xì)的信息
當(dāng)然,以下是對 .spec 文件中給出的 PyInstaller 配置的逐行解釋:
a = Analysis( ['predict_tianjin.py'], # 1 pathex=[], # 2 binaries=[], # 3 datas=[], # 4 hiddenimports=[], # 5 hookspath=[], # 6 hooksconfig={}, # 7 runtime_hooks=[], # 8 excludes=[], # 9 noarchive=False, # 10 optimize=0, # 11 ) pyz = PYZ(a.pure) # 12 exe = EXE( pyz, # 13 a.scripts, # 14 a.binaries, # 15 a.datas, # 16 [], # 17 name='predict_tianjin', # 18 debug=False, # 19 bootloader_ignore_signals=False, # 20 strip=False, # 21 upx=True, # 22 upx_exclude=[], # 23 runtime_tmpdir=None, # 24 console=True, # 25 disable_windowed_traceback=False, # 26 argv_emulation=False, # 27 target_arch=None, # 28 codesign_identity=None, # 29 entitlements_file=None, # 30 )
解釋:
['predict_tianjin.py']: 這是主腳本文件的路徑列表,PyInstaller 將從這個腳本開始分析依賴項。
pathex=[]: 這是額外的路徑列表,PyInstaller 將在此列表中的路徑中搜索模塊。
binaries=[]: 這是包含非 Python 二進(jìn)制文件的元組列表,格式為 (src, dest),其中 src 是打包文件的路徑,dest 是打包文件在可執(zhí)行文件中的路徑。
datas=[]: 這是包含數(shù)據(jù)文件的元組列表,格式與 binaries 相同。
hiddenimports=[]: 這是需要隱式導(dǎo)入的模塊列表,這些模塊可能沒有在腳本中直接導(dǎo)入,但需要包含在打包中。
hookspath=[]: 這是包含 PyInstaller 鉤子文件的路徑列表,這些鉤子文件用于處理特定模塊的打包需求。
hooksconfig={}: 這是鉤子配置的字典,用于傳遞配置選項給鉤子。
runtime_hooks=[]: 這是運行時鉤子腳本的路徑列表,這些腳本將在程序開始執(zhí)行之前運行。
excludes=[]: 這是將被排除在打包之外的模塊列表。
noarchive=False: 如果設(shè)置為 True,則不會創(chuàng)建 Python 庫歸檔文件,而是將它們作為單獨的文件包含。
optimize=0: 設(shè)置 Python 優(yōu)化級別,0 表示不優(yōu)化,1 表示去除斷言,2 表示優(yōu)化字節(jié)碼。
pyz = PYZ(a.pure): 創(chuàng)建一個 PYZ 對象,這是一個包含所有純 Python 代碼(不包含二進(jìn)制擴展)的壓縮包。
13-30. exe = EXE(...): 創(chuàng)建一個可執(zhí)行文件對象,包含以下參數(shù):
- pyz: 上一步創(chuàng)建的 PYZ 對象。
- a.scripts: 由 Analysis 對象確定的腳本列表。
- a.binaries: 由 Analysis 對象確定的二進(jìn)制文件列表。
- a.datas: 由 Analysis 對象確定的數(shù)據(jù)文件列表。
- []: 不明參數(shù),通常為空列表。
- name='predict_tianjin': 生成的可執(zhí)行文件的基本名稱。
- debug=False: 如果設(shè)置為 True,則生成調(diào)試信息。
- bootloader_ignore_signals=False: 控制是否讓引導(dǎo)加載程序忽略信號。
- strip=False: 如果設(shè)置為 True,則從二進(jìn)制文件中移除符號信息。
- upx=True: 如果設(shè)置為 True,則使用 UPX 壓縮可執(zhí)行文件。
- upx_exclude=[]: 不使用 UPX 壓縮的文件列表。
- runtime_tmpdir=None: 運行時的臨時目錄。
- console=True: 如果設(shè)置為 True,則創(chuàng)建控制臺應(yīng)用程序。
- disable_windowed_traceback=False: 控制是否禁用窗口化的回溯。
- argv_emulation=False: 控制是否啟用 argv 模擬。
- target_arch=None: 指定目標(biāo)架構(gòu),例如 'x86' 或 'x64'。
- codesign_identity=None: 用于代碼簽名的標(biāo)識。
到此這篇關(guān)于使用pyinstaller打包py文件的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)pyinstaller打包py內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 解決pyinstaller打包pyqt5的問題
- 使用pyinstaller打包PyQt4程序遇到的問題及解決方法
- 記一次pyinstaller打包pygame項目為exe的過程(帶圖片)
- 基于Pyinstaller打包Python程序并壓縮文件大小
- python3.9實現(xiàn)pyinstaller打包python文件成exe
- 如何利用pyinstaller打包Python程序為exe可執(zhí)行文件
- 教你使用pyinstaller打包Python教程
- 使用pyinstaller打包python PyQt5程序
- Pyinstaller打包Pytorch框架所遇到的問題
- 使用pyinstaller打包PySide2程序中遇到的問題
相關(guān)文章
使用Python實現(xiàn)Wake On Lan遠(yuǎn)程開機功能
這篇文章主要介紹了使用Python實現(xiàn)Wake On Lan遠(yuǎn)程開機功能,文中給大家補充介紹了python通過wakeonlan喚醒內(nèi)網(wǎng)電腦開機,非常不錯,感興趣的朋友跟隨小編一起學(xué)習(xí)吧2020-01-01OpenCV物體跟蹤樹莓派視覺小車實現(xiàn)過程學(xué)習(xí)
這篇文章主要介紹了OpenCV物體跟蹤樹莓派視覺小車的實現(xiàn)過程學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10176萬!GPT-4發(fā)布詳解如何查看OpenAI的下載量
這篇文章主要為大家介紹了GPT-4發(fā)布如何查看OpenAI的下載量詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03通過Python腳本批量復(fù)制并規(guī)范命名視頻文件
本文介紹了如何通過Python腳本批量復(fù)制并規(guī)范命名視頻文件,實現(xiàn)自動補齊數(shù)字編號、保留原始文件、智能識別有效文件等功能,聽過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2025-03-03