即开即用,封装 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.mzph.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 就是前端的地基。 阶段一…