当前位置: 首页 > news >正文

打包python脚本(flask、jinja2)为exe文件

20240803

概述

在我很早时候学习python的时候,就利用过某个工具将其打包为exe文件,然后在没有python环境的机器上运行,这样可以减少安装python环境和各种库的过程。

最近在开发一个在虚拟机上运行的程序的时候就遇到了打包一些环境的问题,主要是由于flask这个应用的问题。

问题描述

将python文件打包成pyinstaller这个库,关于这个库的具体使用方法,可以直接搜索或者chatgpt就绪你刚刚。

在打包flask应用的时候,因为包含一些静态文件,例如html模版,或者图片等,此时就会报错找不到相应的文件,特别是使用了jinja2这个模版库,具体报错可见[1]。

在[1]中,解决这个问题的方法也比较简单,直接就在打包的过程中,加入参数,例如:

pyinstaller -F a.py --add-data 'templates:templates' \--add-data 'static:static' \--add-data 'images:images' \-p /usr/local/lib/python3.10/dist-packages/

因为一开始搜索解决方案的时候,也是结合了打包和jinja这两个关键词,所以得到的答案都是这种,增加参数或者修改配置文件的。但实际上,这个问题并没有完全解决我的问题。

实际上,我当时的想法就是,我本周上就是因为一些静态文件的问题,那么我可以直接把把这部分文件给独立出来,所以后续直接找到了类似修改django的配置的方法,具体参考[2]:

app = Flask(__name__,static_folder= os.getcwd() + '/static',template_folder=os.getcwd() + '/templates')  # 创建Flask对象并自定义静态文件的路径,os.getcwd() 方法是获取当前exe文件包所在的父目录路径

这种方法就可以直接把路径这些的问题给搞定了。

参考

[1]ubuntu22 flask项目 pyinstaller打包后运行报错: jinja2.exceptions.TemplateNotFound: index.html 的一种解决方案
[2]Python Flask使用PyInstaller打包成单独的exe可执行文件后图片无法正常显示的问题及解决方法

相关文章:

打包python脚本(flask、jinja2)为exe文件

20240803 概述 在我很早时候学习python的时候,就利用过某个工具将其打包为exe文件,然后在没有python环境的机器上运行,这样可以减少安装python环境和各种库的过程。 最近在开发一个在虚拟机上运行的程序的时候就遇到了打包一些环境的问题&…...

嵌入式初学-C语言-练习三

#部分题目可能在之前的博客中有&#xff0c;请谅解&#xff0c;保证常见题型均被发出# 1.计算n以内所有正奇数的和 ? n值通过键盘输入 代码&#xff1a; 1 /*2 需求&#xff1a;计算n以内所有正奇数的和 ? n值通过键盘输入3 */4 #include <stdio.h>5 6 int main()7 …...

最新版Sonible Plugins Bundle v2024 winmac,简单智能,持续更新长期有效

一。Sonible Plugins Bundle v2024 win&mac Sonible Plugins Bundle是一款以创作者为中心的智能音频插件系列。这些工具的特点是易于使用&#xff0c;搭配高级处理和优质音质。pure:bundle的所有插件都由sonible的智能插件系列中使用的技术驱动&#xff0c;但在设计时考虑到…...

J032_实现简易版的B/S架构

一、需求描述 实现简易版的B/S架构 1.1 Server package com.itheima.tcp4;import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Executors; import java.uti…...

【前端面试】五、框架

目录 1 Vue2 2 Vue3 3 React 4 Angular 1 Vue2 Vue2 是目前仍被广泛使用的前端框架之一&#xff0c;其特点包括响应式数据绑定、组件化开发等。 响应式系统&#xff1a;Vue2 使用 Object.defineProperty 来实现数据的响应式。每个组件实例在创建时&#xff0c;会将 dat…...

C语言 | Leetcode C语言题解之第316题去除重复字母

题目&#xff1a; 题解&#xff1a; char* removeDuplicateLetters(char* s) {int vis[26], num[26];memset(vis, 0, sizeof(vis));memset(num, 0, sizeof(num));int n strlen(s);for (int i 0; i < n; i) {num[s[i] - a];}char* stk malloc(sizeof(char) * 27);int stk…...

本地部署 Llama-3-EvoVLM-JP-v2

本地部署 Llama-3-EvoVLM-JP-v2 0. 引言1. 关于 Llama-3-EvoVLM-JP-v22. 本地部署2-0. 克隆代码2-1. 安装依赖模块2-2. 创建 Web UI2-3.启动 Web UI2-4. 访问 Web UI 0. 引言 Sakana AI 提出了一种称为进化模型合并的方法&#xff0c;并使用该方法创建大规模语言模型&#xff…...

Evaluating the Generation Capabilities of Large Chinese Language Models

文章目录 题目摘要相关工作CG-Eval实验 题目 评估大型中文语言模型的生成能力 论文地址&#xff1a;https://arxiv.org/abs/2308.04823 项目地址&#xff1a;http://cgeval.besteasy.com/ 摘要 本文介绍了 CG-Eval&#xff0c;这是有史以来第一个全面的自动化评估框架&#xf…...

YOLOv8添加注意力模块并测试和训练

YOLOv8添加注意力模块并测试和训练 参考bilibili视频 yolov8代码库中写好了注意力模块&#xff0c;但是yolov8的yaml文件中并没用使用它&#xff0c;如下图的通道注意力和空间注意力以及两者的结合CBAM&#xff0c;打开conv.py文件可以看到&#xff0c;其中包含了各种卷积块的…...

「Unity3D」自动布局LayoutElement、ContentSizeFitter、AspectRatioFitter、GridLayoutGroup

布局元素与布局控制器 布局元素实现ILayoutElement接口&#xff0c;布局控制器实现ILayoutController接口&#xff0c;后者根据前者的属性控制具体布局——有些布局控制器也是布局元素&#xff0c;即同时实现这两个接口&#xff0c;如LayoutGroup。 public interface ILayout…...

【Golang 面试 - 进阶题】每日 3 题(十六)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…...

Redis2

为什么Redis要给缓存数据设置过期时间&#xff1f; 内存是有限的&#xff0c;如果缓存中的所有数据都是一直保存&#xff0c;很容易OOM Redis如何判断数据是否过期&#xff1f; 通过过期字典来保存数据的过期时间 过期删除策略 Redis采用的是定期删除惰性删除 Redis内存淘…...

C语言--函数

1. 函数定义 语法&#xff1a; 类型标识符 函数名&#xff08;形式参数&#xff09; {函数体代码 } &#xff08;1&#xff09;类型标识符 --- 数据类型&#xff08;函数要带出的结果的类型&#xff09; 注&#xff1a;数组类型不能做函数返回结果的类型&#xff0c;如果函…...

Shell 编程的高级技巧和实战应用

第一步&#xff1a;高级函数和模块化设计 1.1 高级函数设计 探讨函数的参数处理和默认值设置。示例&#xff1a;实现一个可以处理可选参数的函数。 #!/bin/bashgreet() {local name${1:-"World"} # 如果没有提供参数&#xff0c;使用默认值 "World"ech…...

VMWare虚拟机如何连接U盘

检查配置 1&#xff09;Win R键&#xff0c;输入services.msc&#xff0c;打开服务。 2&#xff09;将AMware USB Arbitration Services 服务开启&#xff0c;并设置为自动启动&#xff1b; 连接U盘 目前作者了解有两种连接方式&#xff0c;如有其他连接方式&#xff0c;欢…...

【学习笔记】后缀自动机(SAM)

前言 之前对后缀自动机的理解太浅薄了&#xff0c;故打算重新写一篇。 后缀自动机是什么 后缀自动机是一个字符串的所有后缀建起来的自动机。它把所有子串&#xff08;后缀的前缀&#xff09;用 O ( n ) O(n) O(n) 的空间装了起来。后缀自动机的边会构成一个 D A G DAG DA…...

Godot的节点与场景

要深入的理解节点与场景&#xff0c;我们需要跳出这两个概念来看他。说的再直白一些godot本质就是一个场景编辑器&#xff01; 场景的概念应该在我们平时看电影看电视时会经常提到&#xff0c;比如某一个打斗的场景&#xff0c;这个场景可能会被设在某一个街道&#xff0c;那么…...

C++ 学习(2) ---- std::cout 格式化输出

目录 std::cout 格式化输出简介使用成员函数使用流操作算子 std::cout 格式化输出简介 C 通常使用cout输出数据&#xff0c;和printf()函数相比&#xff0c;cout实现格式化输出数据的方式更加多样化&#xff1b; 一方面&#xff0c;cout 作为 ostream 类的对象&#xff0c;该类…...

前端拿不到Long类型成员变量,用@JsonSerialize(using = ToStringSerializer.class)序列化一下

EqualsAndHashCode(callSuper true) Data TableName("la_school_business") Schema(description "商务负责人表") public class SchoolBusiness extends BaseEntity {private static final long serialVersionUID -7124481085999629236L;/*** 商务负责人…...

JWT登录校验流程

jwt令牌的基本概念&#xff1a; 1. JWT&#xff08;JSON Web Token&#xff09; 定义&#xff1a;JWT 是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在各方之间作为 JSON 对象安全地传输信息。它可以被验证和信任&#xff0c;因为它是数字签名的。结构&am…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

C++中vector类型的介绍和使用

文章目录 一、vector 类型的简介1.1 基本介绍1.2 常见用法示例1.3 常见成员函数简表 二、vector 数据的插入2.1 push_back() —— 在尾部插入一个元素2.2 emplace_back() —— 在尾部“就地”构造对象2.3 insert() —— 在任意位置插入一个或多个元素2.4 emplace() —— 在任意…...