即開即用,封裝 Flask 項目為 exe 文件實操步驟

見字如面,朋友們!

嗨,這里是 AIGC 創意人_竹相左邊!

正如你們所知,我正在通過 AI 自學軟硬件工程師,目標是手搓一臺可回收火箭玩具!

最近,我被《流浪地球 2》中馬兆的那句“沒有硬件支撐,你破解個屁”深深打動——硬件和軟件的結合,才是硬核的靈魂!

今天,我想和大家分享一個實用技巧:如何將我的 Flask 項目封裝成一個即開即用的 .exe 文件,讓沒有編程知識的同事也能輕松使用。

跟著我一步步操作,打造屬于我們的“軟件硬件之光”吧!

image.png

一、為什么要封裝為 .exe?

在開發 Flask 項目時,我們通常需要在 Python 環境中運行,依賴如 Flask、Pillow 等庫。對于編程小白或非技術同事來說,配置環境、安裝依賴簡直是“天坑”。封裝成 .exe 文件的好處在于:

  • 無需安裝 Python:所有依賴打包到一起,雙擊運行即可。
  • 跨平臺友好:Windows 用戶直接使用(Mac/Linux 可考慮其他工具)。
  • 即開即用:就像火箭點火,啟動即飛!

二、準備工作與工具

在開始之前,確認你的開發環境已準備好:

  • Python 環境:確保已安裝 Python 3.x(我用的是 3.9,穩定得很!)。
  • PyInstaller:安裝命令:pip install pyinstaller,這是我們封裝的“火箭引擎”。
  • 項目文件:包括 app.py、routes、templates、static 和 utils 文件夾。

三、整代碼以支持打包

我們需要修改 app.py,添加以下功能:

  • 檢測是否以打包形式運行(PyInstaller 會在運行時設置 sys._MEIPASS)。
  • 正確設置 templates 和 static 文件夾路徑。
  • 啟動程序后自動打開瀏覽器。

    image.png

四、準備打包環境

  • 確保 PyInstaller 已安裝:在你的開發環境中,安裝 PyInstaller:

    pip install pyinstaller
    ?
  • 生成 requirements.txt:確保所有依賴都被記錄,運行以下命令生成 requirements.txt:

    pip freeze > requirements.txt
    ?
  • 項目結構:確認你的項目目錄結構如下:

五、使用 PyInstaller 打包

  • 進入項目目錄
    cd D:\20250219\ai_work\jpg2pdf
  • 運行 PyInstaller 打包命令: 使用 --onefile 選項打包成單個 .exe 文件,同時使用 --add-data 包含 templates 和 static 文件夾。

    pyinstaller --onefile --add-data "templates;templates" --add-data "static;static" app.py
    ?
  • Windows 系統下,路徑分隔符使用 ;。
  • 打包結果: 打包完成后,dist 文件夾中會生成 app.exe。

    image.png

六:測試打包后的 .exe

  • 將 app.exe 復制到桌面: 復制 dist\app.exe 到你的桌面或其他測試目錄。
  • 雙擊運行 app.exe
  • 程序會啟動 Flask 服務器。
  • 默認會自動打開瀏覽器,訪問 http://127.0.0.1:5000。

七、小貼士與優化

  • 添加圖標:用 --icon app.ico 自定義 .exe 圖標。
  • 隱藏命令行:加 --noconsole 讓界面更友好(但保留調試用)。
  • 問題排查:如果運行失敗,檢查是否有缺少的 DLL(如 VCRUNTIME140.dll),建議同事安裝 Microsoft Visual C++ Redistributable。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79733.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79733.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79733.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uniapp開發微信小程序時如何進行分包(新手圖文)

我們在進行uniapp微信小程序開發的時候,每次上傳都提示包太大,主包大小不能超過 2M, 這就很頭疼,這個時候,唯一的解決方案就是分包了,那如何進行分包呢? 分包步驟如下: 一、配置man…

基于C++的IOT網關和平臺2:github項目ctGateway技術說明書

初級代碼游戲的專欄介紹與文章目錄-CSDN博客 我的github:codetoys,所有代碼都將會位于ctfc庫中。已經放入庫中我會指出在庫中的位置。 這些代碼大部分以Linux為目標但部分代碼是純C++的,可以在任何平臺上使用。 源碼指引:github源碼指引_初級代碼游戲的博客-CSDN博客 系…

從巴別塔到通天塔:Manus AI 如何重構多語言手寫識別的智能版圖

一、引言:當人類手寫遇上 AI “巴別塔” 在幼發拉底河畔的古老傳說中,巴別塔的崩塌象征著人類語言互通的終結。而在數字時代,全球 7000 余種語言的手寫文字,正成為橫亙在人機交互之間的新 “巴別塔”—— 阿拉伯文的連筆天書、中…

n8n 快速入門2:構建自動化工作流

n8n 快速入門2:構建自動化工作流 什么是n8n?項目目標準備工作步驟一:創建新工作流步驟二:添加觸發節點步驟三:配置NASA節點與憑證1. 添加NASA節點2. 設置NASA API憑證3. 使用表達式設置時間范圍步驟四:添加If條件節點1. 創建條件分支2. 測試條件邏輯步驟五:配置輸出節點…

從實列中學習linux shell10 : 如何根據服務器的內存,cpu 以及 ssd硬盤 來確定mysql 的最大并發數

以下是根據服務器硬件資源智能推薦MySQL最大并發連接數 包含詳細的計算邏輯和實時資源檢測: 且記:該腳本要放在 安裝mysql的服務器上 運行 第一步:實現腳本 #!/bin/bash# 計算MySQL最大連接數推薦值 # 公式說明:取CPU計算值與內…

數據結構--AVL樹

目錄 前言 AVL樹的特點 AVL樹的插入 節點的定義 情況分析 AVL樹的旋轉 右單旋 左單旋 左右雙旋 右左雙旋 ?編輯總結 驗證AVL樹 前言 二叉搜索樹可以幫助我們以極高的效率查找(理想情況下是logn),但是當在極端情況下,比如當樹中的節點值是有…

泰迪杯特等獎案例學習資料:基于多模態融合與邊緣計算的智能溫室環境調控系統

(第十二屆泰迪杯數據挖掘挑戰賽特等獎案例解析) 一、案例背景與核心挑戰 1.1 應用場景與行業痛點 在現代設施農業中,溫室環境調控直接影響作物產量與品質。傳統溫室管理存在以下問題: 環境參數耦合性高:溫度、濕度、光照、CO?濃度等參數相互影響,人工調控易顧此失彼。…

動手學深度學習12.1. 編譯器和解釋器-筆記練習(PyTorch)

以下內容為結合李沐老師的課程和教材補充的學習筆記,以及對課后練習的一些思考,自留回顧,也供同學之人交流參考。 本節課程地址:無 本節教材地址:12.1. 編譯器和解釋器 — 動手學深度學習 2.0.0 documentation 本節…

[java八股文][Java并發編程面試篇]并發安全

juc包下你常用的類? 線程池相關: ThreadPoolExecutor:最核心的線程池類,用于創建和管理線程池。通過它可以靈活地配置線程池的參數,如核心線程數、最大線程數、任務隊列等,以滿足不同的并發處理需求。Exe…

VMware搭建ubuntu保姆級教程

目錄 VMware Ubuntu 虛擬機配置指南 創建虛擬機 下載 Ubuntu ISO 新建虛擬機 網絡配置(雙網卡模式) 共享文件夾設置 SSH 遠程訪問配置 VMware Ubuntu 虛擬機配置指南 創建虛擬機 下載 Ubuntu ISO 【可添加我獲取】 官網:Get Ubunt…

馮諾依曼結構與哈佛架構深度解析

一、馮諾依曼結構(Von Neumann Architecture) 1.1 核心定義 由約翰馮諾依曼提出,程序指令與數據共享同一存儲空間和總線,通過分時復用實現存取。 存儲器總帶寬 指令帶寬 數據帶寬 即:B_mem f_clk W_data f_…

C/C++工程中的Plugin機制設計與Python實現

C/C工程中的Plugin機制設計與Python實現 1. Plugin機制設計概述 在C/C工程中實現Plugin機制通常需要以下幾個關鍵組件: Plugin接口定義:定義統一的接口規范動態加載機制:運行時加載動態庫注冊機制:Plugin向主程序注冊自己通信機…

node-sass安裝失敗解決方案

1、python環境問題 Error: Cant find Python executable "python", you can set the PYTHON env variable. 提示找不到python2.7版本, 方法一:可安裝一個python2.7或引用其他已安裝的python2.7 通過設置環境變量可以解決; 方法二&…

Netty高并發物聯網通信服務器實戰:協議優化與性能調優指南

目錄 1.總體設計 2.自定義協議設計(簡單版) 3.消息類型(1字節) 4.項目結構 5.核心功能代碼 (1)pom.xml(Maven依賴) (2)IotServer.java(服務器啟動器) (3)IotServerInitializer.java(Pipeline初始化) (4)DeviceChannelManager.java(設備連接管理器)…

多模態大語言模型arxiv論文略讀(六十)

Cantor: Inspiring Multimodal Chain-of-Thought of MLLM ?? 論文標題:Cantor: Inspiring Multimodal Chain-of-Thought of MLLM ?? 論文作者:Timin Gao, Peixian Chen, Mengdan Zhang, Chaoyou Fu, Yunhang Shen, Yan Zhang, Shengchuan Zhang, Xi…

面試常問系列(一)-神經網絡參數初始化-之自注意力機制為什么除以根號d而不是2*根號d或者3*根號d

首先先羅列幾個參考文章,大家之后可以去看看,加深理解: 面試常問系列(一)-神經網絡參數初始化面試常問系列(一)-神經網絡參數初始化之自注意力機制_注意力機制的參數初始化怎么做-CSDN博客面試常問系列(一)-神經網絡參數初始化-之-softmax-C…

第5篇:EggJS中間件開發與實戰應用

在Web開發中,中間件(Middleware)是處理HTTP請求和響應的核心機制之一。EggJS基于Koa的洋蔥模型實現了高效的中間件機制,本文將深入探討中間件的執行原理、開發實踐以及常見問題解決方案。 一、中間件執行機制與洋蔥模型 1. 洋蔥模…

樹狀結構轉換工具類

項目中使用了很多樹狀結構,為了方便使用開發一個通用的工具類。 使用工具類的時候寫一個類基礎BaseNode,如果有個性化字段添加到類里面,然后就可以套用工具類。 工具類會將id和pid做關聯返回一個樹狀結構的集合。 使用了hutool的工具包判空…

【Python】--裝飾器

裝飾器(Decorator)本質上是一個返回函數的函數 主要作用是:在不修改原函數代碼的前提下,給函數增加額外的功能 比如:增加業務,日志記錄、權限驗證、執行時間統計、緩存等場景 my_decorator def func():pas…

AI教你學VUE——Gemini版

前端開發學習路線圖 (針對編程新手,主攻 Vue 框架) 總原則:先夯實基礎,再深入框架。 想象一下建房子,地基不牢,上面的高樓(框架)是蓋不起來的。HTML、CSS、JavaScript 就是前端的地基。 階段一…