最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python和Vue代碼打包成.exe文件的保姆級(jí)教程

 更新時(shí)間:2026年03月17日 08:48:25   作者:Java后端的Ai之路  
這篇文章主要介紹了如何將Python和Vue項(xiàng)目打包成.exe文件的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

你是不是也曾想過(guò):把自己寫的 Python 腳本發(fā)給朋友,結(jié)果對(duì)方說(shuō)“打不開,沒(méi)有 Python 環(huán)境”?或者精心制作的 Vue 網(wǎng)頁(yè),想讓用戶像用軟件一樣雙擊就能用,而不是打開瀏覽器輸入地址?別擔(dān)心,把代碼變成 .exe 文件就能解決這些問(wèn)題!

本文將用 “是什么 → 為什么 → 如何用 → 如何用好” 的邏輯,分別講解 PythonVue 項(xiàng)目打包成 .exe 的全過(guò)程。既有專業(yè)術(shù)語(yǔ),也有大白話和生活案例,保證你看完就能動(dòng)手。

一、Python 代碼打包成 .exe

1.1 是什么?(專業(yè)解釋 + 大白話)

專業(yè)解釋:將 Python 腳本(.py)及其依賴的庫(kù)、Python 解釋器打包成一個(gè)獨(dú)立的可執(zhí)行文件(Windows 下為 .exe)。這個(gè)文件可以在沒(méi)有安裝 Python 環(huán)境的 Windows 電腦上直接運(yùn)行。

大白話:就像你做了一套樂(lè)高積木(代碼),但對(duì)方家里沒(méi)有樂(lè)高零件(Python 環(huán)境)。你干脆把積木拼好,連同一份說(shuō)明書(解釋器)一起放進(jìn)一個(gè)盒子里(.exe),對(duì)方拿到盒子打開就能玩,不需要自己準(zhǔn)備任何東西。

生活案例:你寫了一款猜數(shù)字的小游戲,想發(fā)給不懂編程的女朋友玩。直接發(fā) .py 文件她打不開。打包成 .exe 后,她雙擊就能玩,就像打開一個(gè)普通游戲一樣。

1.2 為什么要用?(優(yōu)勢(shì))

  • 分發(fā)方便:用戶無(wú)需安裝 Python 和任何庫(kù)。
  • 保護(hù)源碼.exe 是二進(jìn)制文件,比直接給源碼更難被剽竊(但并非絕對(duì)安全)。
  • 跨版本兼容:不用擔(dān)心用戶電腦上的 Python 版本與你的不兼容。
  • 專業(yè)感:給客戶或同事展示時(shí),一個(gè) .exe 比一堆腳本文件更顯專業(yè)。

1.3 如何用?(手把手教程)

核心工具:PyInstaller

PyInstaller 是目前最主流的 Python 打包工具,支持 Windows、Linux、macOS。

步驟 1:安裝 PyInstaller

打開命令提示符(cmd)或終端,輸入:

pip install pyinstaller

步驟 2:準(zhǔn)備你的 Python 腳本

假設(shè)你的腳本叫 my_game.py,放在某個(gè)文件夾(如 D:\my_project)。建議先在一個(gè)干凈的虛擬環(huán)境中測(cè)試,避免打包進(jìn)不必要的庫(kù)。

步驟 3:執(zhí)行打包命令

進(jìn)入腳本所在目錄,運(yùn)行:

pyinstaller --onefile my_game.py
  • --onefile:將所有內(nèi)容打包成單個(gè) .exe 文件。
  • 如果不加這個(gè)參數(shù),會(huì)生成一個(gè)文件夾,里面包含多個(gè)依賴文件。

等待幾分鐘,打包完成后,在 dist 文件夾里就能找到 my_game.exe。

常用參數(shù)

  • -w--windowed:如果你的程序有圖形界面(如 Tkinter、PyQt),加上此參數(shù)可避免運(yùn)行時(shí)彈出命令行窗口。
  • --icon=my_icon.ico:給生成的 .exe 添加自定義圖標(biāo)(圖標(biāo)需為 .ico 格式)。
  • --name="My Game":指定生成的文件名。

例如,帶圖標(biāo)且無(wú)命令行窗口的打包命令:

pyinstaller --onefile -w --icon=game.ico my_game.py

1.4 如何用好?(進(jìn)階技巧)

1.減小文件體積

Python 打包后常常幾十 MB,甚至上百 MB,因?yàn)榘苏麄€(gè)解釋器和標(biāo)準(zhǔn)庫(kù)。優(yōu)化方法:

  • 使用虛擬環(huán)境:新建一個(gè)虛擬環(huán)境,只安裝腳本真正需要的庫(kù),然后在該環(huán)境中打包。
  • 使用 UPX 壓縮:下載 UPX 并放在 PATH 中,PyInstaller 會(huì)自動(dòng)調(diào)用它壓縮可執(zhí)行文件,體積可縮小 30%-50%。
  • 清理不必要的庫(kù):檢查 import 是否引入了不必要的模塊,可以用 pyinstaller --exclude-module 排除。

2.處理文件路徑問(wèn)題

打包后的 .exe 運(yùn)行時(shí)的當(dāng)前目錄可能和開發(fā)時(shí)不同,導(dǎo)致找不到資源文件(如圖片、配置文件)。解決方案:

在代碼中動(dòng)態(tài)獲取運(yùn)行時(shí)路徑:

import sys
import os
def resource_path(relative_path):
"""獲取資源的絕對(duì)路徑,兼容開發(fā)和打包后"""
if hasattr(sys, '_MEIPASS'):
# PyInstaller 創(chuàng)建的臨時(shí)文件夾
base_path = sys._MEIPASS
else:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)

然后在加載文件時(shí)使用 resource_path('images/logo.png')。

同時(shí),打包時(shí)需要將資源文件一起打包,使用 --add-data 參數(shù):

pyinstaller --onefile --add-data "images;images" my_game.py

(Windows 用分號(hào)分隔源和目標(biāo),Linux/macOS 用冒號(hào))

3.調(diào)試技巧

如果打包后運(yùn)行閃退,可以在命令行中運(yùn)行 .exe,查看錯(cuò)誤信息?;蛘叽虬鼤r(shí)不要加 -w,讓命令行窗口顯示錯(cuò)誤日志。

還可以使用 --debug 參數(shù)生成帶調(diào)試信息的版本。

二、Vue 代碼打包成 .exe

2.1 是什么?(專業(yè)解釋 + 大白話)

專業(yè)解釋:Vue 是 Web 前端框架,生成的是 HTML、CSS、JS 文件,需要瀏覽器才能運(yùn)行。將 Vue 項(xiàng)目打包成 .exe,實(shí)際上是利用 Electron 這樣的框架,把 Vue 的靜態(tài)文件嵌入到一個(gè)內(nèi)置的 Chromium 瀏覽器內(nèi)核中,生成一個(gè)桌面應(yīng)用。

大白話:你做了一個(gè)非常漂亮的網(wǎng)頁(yè)(Vue 項(xiàng)目),但想讓用戶像使用 QQ 一樣雙擊圖標(biāo)就能打開,而不是打開瀏覽器輸入網(wǎng)址。于是你給這個(gè)網(wǎng)頁(yè)穿上了一個(gè)“瀏覽器外套”(Electron),這個(gè)外套沒(méi)有地址欄、工具欄,看起來(lái)就是一個(gè)真正的軟件。

生活案例:你最喜歡的代碼編輯器 VS Code,其實(shí)就是用 Electron 把網(wǎng)頁(yè)技術(shù)包裝成的桌面應(yīng)用。你寫代碼時(shí)的界面,本質(zhì)上是一個(gè)跑在精簡(jiǎn)版 Chrome 里的網(wǎng)頁(yè)。

2.2 為什么要用?

  • 跨平臺(tái)桌面應(yīng)用:一套代碼同時(shí)生成 Windows、macOS、Linux 應(yīng)用。
  • 離線可用:打包后用戶無(wú)需聯(lián)網(wǎng),也能使用你的應(yīng)用。
  • 訪問(wèn)系統(tǒng)資源:通過(guò) Electron 的 Node.js 能力,可以讀寫文件、調(diào)用系統(tǒng) API 等,比純網(wǎng)頁(yè)更強(qiáng)大。
  • 分發(fā)簡(jiǎn)單:用戶下載安裝包即可使用,無(wú)需部署服務(wù)器。

2.3 如何用?(手把手教程)

核心工具:Electron + electron-builder

我們以創(chuàng)建一個(gè)簡(jiǎn)單的 Vue 3 + Electron 項(xiàng)目為例。

步驟 1:創(chuàng)建 Vue 項(xiàng)目

如果你還沒(méi)有 Vue 項(xiàng)目,先用 Vue CLI 創(chuàng)建一個(gè):

npm install -g @vue/cli
vue create my-vue-app
cd my-vue-app

步驟 2:安裝 Electron 及相關(guān)依賴

npm install electron --save-dev
npm install electron-builder --save-dev # 用于打包

步驟 3:配置 Electron 主進(jìn)程

在項(xiàng)目根目錄創(chuàng)建 electron.js(或 main.js),內(nèi)容如下:

const { app, BrowserWindow } = require('electron')
function createWindow() {
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: false, // 出于安全考慮,通常禁用
contextIsolation: true,
}
})
// 加載 Vue 打包后的 index.html
// 開發(fā)環(huán)境可以加載 http://localhost:8080
// 生產(chǎn)環(huán)境加載文件
if (process.env.NODE_ENV === 'development') {
win.loadURL('http://localhost:8080')
win.webContents.openDevTools() // 打開開發(fā)者工具
} else {
win.loadFile('dist/index.html')
}
}
app.whenReady().then(createWindow)

步驟 4:修改 package.json

package.json 中添加以下字段:

{
"main": "electron.js",
"scripts": {
"electron:serve": "vue-cli-service serve & electron .",
"electron:build": "vue-cli-service build && electron-builder"
},
"build": {
"appId": "com.example.myapp",
"productName": "My Vue App",
"directories": {
"output": "dist_electron"
},
"files": [
"dist/**/*",
"electron.js"
],
"win": {
"target": "nsis",
"icon": "public/icon.ico"
}
}
}

步驟 5:測(cè)試開發(fā)模式

先運(yùn)行 npm run electron:serve,它會(huì)啟動(dòng) Vue 開發(fā)服務(wù)器并打開 Electron 窗口,實(shí)時(shí)看到修改效果。

步驟 6:打包成 .exe

運(yùn)行命令:

npm run electron:build

等待打包完成,在 dist_electron 文件夾下會(huì)生成安裝包(如 My Vue App Setup 1.0.0.exe)和便攜版 .exe。

2.4 如何用好?(進(jìn)階技巧)

1.優(yōu)化打包體積

Electron 應(yīng)用默認(rèn)包含整個(gè) Chromium 和 Node.js,體積通常在 50MB 以上。優(yōu)化方法:

  • 按需加載:在 Vue 中使用路由懶加載、組件懶加載。
  • 壓縮資源:圖片、字體等資源壓縮。
  • 移除不必要的依賴:檢查 node_modules 中是否有開發(fā)依賴被打包進(jìn)去(electron-builder 默認(rèn)會(huì)過(guò)濾 devDependencies)。

2.處理跨域與安全

在 Electron 中,渲染進(jìn)程(網(wǎng)頁(yè))默認(rèn)無(wú)法直接訪問(wèn) file:// 協(xié)議下的外部資源。如果需要請(qǐng)求網(wǎng)絡(luò) API,可以使用 webSecurity: false(不推薦)或通過(guò)主進(jìn)程代理。

推薦做法:在渲染進(jìn)程中使用 fetch 請(qǐng)求 API,前提是 API 支持 CORS。如果不行,可以在主進(jìn)程中使用 net 模塊發(fā)起請(qǐng)求,然后通過(guò) ipcMainipcRenderer 通信。

3.自動(dòng)更新

Electron 應(yīng)用可以支持自動(dòng)更新。配合 electron-updater 和 GitHub Releases 或自己的更新服務(wù)器,讓用戶每次打開都能獲得最新版本。

4.常見坑點(diǎn)

  • 路徑問(wèn)題:打包后,__dirname 指向的是 app.asar 內(nèi)部路徑,無(wú)法直接寫入文件。需要讀寫用戶數(shù)據(jù)時(shí),應(yīng)使用 app.getPath('userData') 獲取可寫目錄。
  • 開發(fā)與生產(chǎn)環(huán)境判斷:通過(guò) process.env.NODE_ENV 區(qū)分,或使用 electron-is-dev 庫(kù)。
  • 圖標(biāo)格式:Windows 需 .ico 格式,macOS 需 .icns。

三、總結(jié)

維度Python 打包Vue 打包(Electron)
本質(zhì)打包解釋器+代碼打包瀏覽器內(nèi)核+網(wǎng)頁(yè)
適用場(chǎng)景腳本、小工具、數(shù)據(jù)分析應(yīng)用復(fù)雜交互的桌面應(yīng)用、現(xiàn)有 Web 項(xiàng)目
體積一般 10~50 MB一般 50~200 MB
學(xué)習(xí)曲線平緩(PyInstaller 簡(jiǎn)單)中等(需了解 Electron 架構(gòu))
跨平臺(tái)需分別打包一套代碼打包多平臺(tái)

無(wú)論你是 Python 開發(fā)者還是 Vue 開發(fā)者,將代碼打包成 .exe 都是讓作品更易傳播、更專業(yè)的重要技能。希望本教程能幫你邁出這一步!

以上就是Python和Vue代碼打包成.exe文件的保姆級(jí)教程的詳細(xì)內(nèi)容,更多關(guān)于Python和Vue代碼打包成.exe的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python+selenium實(shí)現(xiàn)趣頭條的視頻自動(dòng)上傳與發(fā)布

    Python+selenium實(shí)現(xiàn)趣頭條的視頻自動(dòng)上傳與發(fā)布

    本文主要介紹了通過(guò)Python+selenium實(shí)現(xiàn)趣頭條的短視頻自動(dòng)上傳與發(fā)布功能,同時(shí)支持抖音、快手、b站、小紅書等平臺(tái)的視頻自動(dòng)化同步發(fā)布。需要的朋友可以參考一下
    2021-12-12
  • python 爬蟲出現(xiàn)403禁止訪問(wèn)錯(cuò)誤詳解

    python 爬蟲出現(xiàn)403禁止訪問(wèn)錯(cuò)誤詳解

    這篇文章主要介紹了 python 爬蟲解決403禁止訪問(wèn)錯(cuò)誤的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • python處理二進(jìn)制數(shù)據(jù)的方法

    python處理二進(jìn)制數(shù)據(jù)的方法

    這篇文章主要介紹了python處理二進(jìn)制數(shù)據(jù)的方法,涉及Python針對(duì)二進(jìn)制數(shù)據(jù)的相關(guān)操作技巧,需要的朋友可以參考下
    2015-06-06
  • 基于Flask實(shí)現(xiàn)文件上傳七牛云中并下載

    基于Flask實(shí)現(xiàn)文件上傳七牛云中并下載

    文件上傳是Web應(yīng)用中常見的功能之一,而七牛云則提供了強(qiáng)大的云存儲(chǔ)服務(wù),本文我們將學(xué)習(xí)如何在Flask應(yīng)用中實(shí)現(xiàn)文件上傳,并將上傳的文件保存到七牛云,感興趣的可以學(xué)習(xí)一下
    2023-10-10
  • Python操作Excel工作簿的示例代碼(\*.xlsx)

    Python操作Excel工作簿的示例代碼(\*.xlsx)

    這篇文章主要介紹了Python操作Excel工作簿的示例代碼(\*.xlsx),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 詳解Django admin高級(jí)用法

    詳解Django admin高級(jí)用法

    這篇文章主要介紹了Django admin高級(jí)用法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 對(duì)pandas的行列名更改與數(shù)據(jù)選擇詳解

    對(duì)pandas的行列名更改與數(shù)據(jù)選擇詳解

    今天小編就為大家分享一篇對(duì)pandas的行列名更改與數(shù)據(jù)選擇詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • pycharm安裝漢化包失敗的問(wèn)題及解決

    pycharm安裝漢化包失敗的問(wèn)題及解決

    這篇文章主要介紹了pycharm安裝漢化包失敗的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Python使用爬蟲猜密碼

    Python使用爬蟲猜密碼

    我們可以通過(guò)python 來(lái)實(shí)現(xiàn)這樣一個(gè)簡(jiǎn)單的爬蟲猜密碼功能。下面就看看如何使用python來(lái)實(shí)現(xiàn)這樣一個(gè)功能,對(duì)python爬蟲猜密碼相關(guān)知識(shí)感興趣的朋友參考下吧
    2016-02-02
  • Python dict字典基本操作(添加、修改、刪除鍵值對(duì))

    Python dict字典基本操作(添加、修改、刪除鍵值對(duì))

    本文主要介紹了Python dict字典基本操作,主要包括字典添加、修改、刪除鍵值對(duì)等,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09

最新評(píng)論

庆阳市| 中江县| 遂昌县| 江津市| 健康| 兴业县| 集贤县| 宜春市| 平远县| 张掖市| 杂多县| 宁夏| 阿克苏市| 武威市| 洛宁县| 博客| 明水县| 拉萨市| 施秉县| 吉林省| 牡丹江市| 玉树县| 濮阳市| 保德县| 许昌县| 武平县| 邻水| 鹤壁市| 将乐县| 江安县| 汉阴县| 绥化市| 佛山市| 台湾省| 阜城县| 炉霍县| 潮安县| 塔城市| 平顺县| 扶风县| 涪陵区|