python用PyInstaller打包成windows可執(zhí)行的exe(細致版)
前言
在開發(fā) Python 應用程序時,有時我們需要將腳本打包成獨立的可執(zhí)行文件(.exe),以便于在沒有安裝 Python 環(huán)境的計算機上運行。本文將介紹如何使用 PyInstaller 工具將 Python 本打包成 Windows 可執(zhí)行文件。
1. 安裝 PyInstaller
首先,你需要安裝 PyInstaller??梢酝ㄟ^ pip 來安裝:
pip install pyinstaller
2. 準備你的 Python 腳本
假設(shè)你有一個名為 myapp.py 的 Python 腳本,內(nèi)容如下:
import tkinter as tk</code> <code>def on_button_click():</code><code> label.config(text="Hello, World!")</code> <code>root = tk.Tk()</code><code>root.title("My App")</code> <code>label = tk.Label(root, text="Welcome to My App")</code><code>label.pack(pady=20)</code> <code>button = tk.Button(root, text="Click Me", command=on_button_click)</code><code>button.pack(pady=10)</code> <code>root.mainloop()
這個腳本使用 tkinter 庫創(chuàng)建了一個簡單的 GUI 應用程序。
3. 使用 PyInstaller 打包腳本
3.1 基本打包
打開命令行或終端,導航到包含 myapp.py 的目錄,然后運行以下命令:
pyinstaller myapp.py
這將生成一個 dist 目錄,其中包含可執(zhí)行文件和其他必要的文件。
3.2 單文件模式
為了生成一個單獨的可執(zhí)行文件,可以使用 --onefile 參數(shù):
pyinstaller --onefile myapp.py
3.3 設(shè)置圖標
如果你希望給生成的可執(zhí)行文件設(shè)置圖標,可以使用 --icon 參數(shù)。假設(shè)你有一個名為 myicon.ico 的圖標文件:
pyinstaller --onefile --icon=myicon.ico myapp.py
3.4 隱藏控制臺窗口
對于 GUI 應用程序,你可能不希望顯示控制臺窗口??梢允褂?--noconsole 參數(shù)來隱藏控制臺窗口:
pyinstaller --onefile --noconsole --icon=myicon.ico myapp.py
3.5 添加數(shù)據(jù)文件
如果你的應用程序需要額外的數(shù)據(jù)文件,比如配置文件或資源文件,可以使用 --add-data 參數(shù)。例如,假設(shè)你有一個名為 config.ini 的配置文件:
pyinstaller --onefile --noconsole --icon=myicon.ico --add-data "config.ini;." myapp.py
這里的 config.ini;. 表示將 config.ini 文件復制到可執(zhí)行文件所在目錄的根目錄下。
4. 使用 .spec 文件進行高級配置
對于更復雜的項目,你可能需要更多的控制權(quán)。PyInstaller 提供了 .spec 文件來配置構(gòu)建過程。
4.1 生成 .spec 文件
首次運行 PyInstaller 時,它會自動生成一個 .spec 文件。例如:
pyinstaller myapp.py
這將在當前目錄下生成一個 myapp.spec 文件。
4.2 編輯 .spec 文件
打開 myapp.spec 文件,你可以看到類似以下內(nèi)容:
# -*- mode: python ; coding: utf-8 -*-</code> <code>block_cipher = None</code> <code>a = Analysis(</code><code> ['myapp.py'],</code><code> pathex=[],</code><code> binaries=[],</code><code> datas=[],</code><code> hiddenimports=[],</code><code> hookspath=[],</code><code> runtime_hooks=[],</code><code> excludes=[],</code><code> win_no_prefer_redirects=False,</code><code> win_private_assemblies=False,</code><code> cipher=block_cipher,</code><code>)</code><code>pyz = PYZ(a.pure, a.zipped_data,</code><code> cipher=block_cipher)</code><code>exe = EXE(</code><code> pyz,</code><code> a.scripts,</code><code> [],</code><code> exclude_binaries=True,</code><code> name='myapp',</code><code> debug=False,</code><code> strip=False,</code><code> upx=True,</code><code> console=False,</code><code> icon='myicon.ico',</code><code>)</code><code>coll = COLLECT(</code><code> exe,</code><code> a.binaries,</code><code> a.zipfiles,</code><code> a.datas,</code><code> strip=False,</code><code> upx=True,</code><code> upx_exclude=[],</code><code> name='myapp',</code><code>)
你可以在這個文件中進行各種配置,例如添加數(shù)據(jù)文件、排除不必要的模塊等。
4.3 使用 .spec 文件構(gòu)建
保存并關(guān)閉 .spec 文件后,使用以下命令進行構(gòu)建:
pyinstaller myapp.spec
5.創(chuàng)建虛擬環(huán)境,減少打包文件文件大小
一般打包時,會將一些不必要的庫順帶一并打包進程序中,這會造成打包后的文件非常大,因此可以通過安裝一個虛擬環(huán)境來進行打包。
復制這個目錄。
然后,我們需要安裝兩個依賴包:
pip install virtualenv</code><code>pip install virtualenvwrapper-win
如果網(wǎng)絡(luò)不佳,可使用國內(nèi)的鏡像庫進行安裝:
pip install virtualenv -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple some-package
然后創(chuàng)建虛擬環(huán)境:
mkvirtualenv -p="C:\Users\jyw\AppData\Local\Programs\Python\Python311\python.exe" pyenv311
打開這個虛擬環(huán)境:
workon pyenv311
可以看到里面只有基本的庫。
然后我們?nèi)ミ\行py文件,安裝缺失的必要庫,運行成功后再打包即可。
若要刪除虛擬環(huán)境,使用 rmvirtualenv 命令刪除虛擬環(huán)境:例如,要刪除名為 pyenv311 的虛擬環(huán)境,可以運行以下命令:
rmvirtualenv pyenv311
6. 測試生成的可執(zhí)行文件
構(gòu)建完成后,進入 dist 目錄,運行生成的可執(zhí)行文件:
cd dist</code><code>myapp.exe
確保應用程序能夠正常運行,并且所有功能都能正常使用。
7. 分發(fā)可執(zhí)行文件
將 dist 目錄中的可執(zhí)行文件及其依賴文件(如果有)打包成一個壓縮包,發(fā)給需要用的人即可啦??!
總結(jié)
到此這篇關(guān)于python用PyInstaller打包成windows可執(zhí)行exe的文章就介紹到這了,更多相關(guān)python PyInstaller打包成exe內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用PyCharm調(diào)試程序?qū)崿F(xiàn)過程
這篇文章主要介紹了使用PyCharm調(diào)試程序?qū)崿F(xiàn)過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11利用Python實現(xiàn)K-Means聚類的方法實例(案例:用戶分類)
k-means是發(fā)現(xiàn)給定數(shù)據(jù)集的k個簇的算法,也就是將數(shù)據(jù)集聚合為k類的算法,下面這篇文章主要給大家介紹了關(guān)于利用Python實現(xiàn)K-Means聚類的相關(guān)資料,需要的朋友可以參考下2022-05-05舉例講解Python中metaclass元類的創(chuàng)建與使用
在Python中我們用type函數(shù)可以動態(tài)地創(chuàng)建一個元類,同樣也可以用__metaclass__屬性來指定一個元類,接下來我們就來具體舉例講解Python中metaclass元類的創(chuàng)建與使用2016-06-06