pyinstaller 打包uvicorn的坑

news/2024/11/17 11:37:50/文章来源:https://www.cnblogs.com/yswsxf/p/18350788

0.1 你使用fastapi搭建服务,并使用uvicorn来启动。

0.2 你使用pyinstaller打包成exe文件,并且需要隐藏控制台窗口。

0.3 执行exe文件时,程序报错了(模块相关错误和日志相关错误),网上找的资料都无法解决你的问题。

如果满足这些条件,可以继续往下看,我的方法主要参考chatGpt。

例如有一个server.py文件:

 

1 原因分析

当你添加"-w"选项(即生成没有控制台窗口的可执行文件)时,uvicorn无法将日志和错误信息显示在控制台窗口中,因此会导致程序报错。

“Error loading ASGI app. Could not import module "server".”报错的主要原因是导入app时,没有找到"server.py"文件。

2 解决方案

禁用uvicorn将日志记录到控制台,可以使用uvicorn的日志配置选项来定制日志输出。

使用Python的logging模块来配置日志记录。可以创建一个自定义的日志配置,并将其传递给uvicorn的run函数。

即把server.py修改成:

import os
import sys
root_path = os.getcwd()
sys.path.append(root_path)from fastapi import FastAPI
import os,sys,uvicorn
app = FastAPI()@app.get("/")
async def get():return "Hello! World!"if __name__ == "__main__":name_app = os.path.basename(__file__)[0:-3]  # Get the name of the scriptlog_config = {"version": 1,"disable_existing_loggers": True,"handlers": {"file_handler": {"class": "logging.FileHandler","filename": "logfile.log",},},"root": {"handlers": ["file_handler"],"level": "INFO",},
}uvicorn.run(f'{name_app}:app', host="0.0.0.0", port=8000, reload=False,log_config=log_config)

 

pyinstaller -F server.py -i lingge.jpg

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/780309.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA线程资源共享问题

JAVA多线程共享资源问题 场景引入 这个场景是一个典型的多线程共享资源的场景,主要目的是测试和观察多个线程对共享变量 sum 进行并发操作时是否会出现线程安全问题 场景描述 共享资源:共享变量 sum,初始值为 0。 多个线程同时对 sum 进行操作,一个线程负责自增操作,另一个…

透过vivo的鞋子和亚马逊的椅子:探究新商业文明

有一种领先,叫微微领先。在亚马逊的会议室中,有一把永远为用户准备的椅子;在vivo,则要求不能只坐在会议室看PPT上的用户需求,而是要穿着用户的鞋子在企业奔跑。殊途同归,将“以用户导向”作为企业长期发展的基石,亚马逊和vivo真正将“让用户Happy”通过道、法、术落到了…

Neo4j 实现一个简单的CMDB管理平台

简介Neo4j是一个高性能的图形数据库管理系统,它使用图形模型来存储和查询数据。图形数据库与传统的关系型数据库不同,它们使用节点和边来表示数据实体和它们之间的关系,而不是使用表格和行,可以使用neo4j实现权限系统,知识图谱,cmdb等部署 docker run -d --name=neo4j \--…

10V45-ASEMI超低Low VF值肖特基二极管10V45

10V45-ASEMI超低Low VF值肖特基二极管10V45编辑:ll 10V45-ASEMI超低Low VF值肖特基二极管10V45 型号:10V45 品牌:ASEMI 封装:TO-277 批号:最新 恢复时间:35ns 最大平均正向电流(IF):10A 最大循环峰值反向电压(VRRM):45V 最大正向电压(VF):0.28V~0.42V 工作温度:…

方法的作用及定义

5.1 方法的作用及定义目录5.1 方法的作用及定义5.1.1 方法的作用5.1.2 方法的定义5.1.3 方法调用5.1.4 静态方法5.1.1 方法的作用 一、什么是方法呢? Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被…

零基础学习人工智能—Python—Pytorch学习(三)

前言 这篇文章主要两个内容。 一,把上一篇关于requires_grad的内容补充一下。 二,介绍一下线性回归。 关闭张量计算 关闭张量计算。这个相对简单,阅读下面代码即可。 print("============关闭require_grad==============") x = torch.randn(3, requires_grad=True…

Java - IO流

(IO随用随创建,不用了就关流) 1.字节流 OutputStream(字节输出流,写出) FileOutputStreanmoff表示起始索引,len表示截取长度 Windows换行符:"\r\n" Linux:"\n" Mac:"\r" 续写:创建对象第二个参数写true字节打印流(特有方法会原样输出…

Win10无法登录到你的帐户的问题

症状登录之后,系统有个弹窗,提示无法登录到你的帐户2,桌面上原本放的东西不见了,桌面上新放的东西,重启电脑之后会丢失,不能保存 3,cmd 命令行 > echo %userprofile% 之后显示的是TEMP.000, TEMP.001这样子的临时目录问题分析尝试用过参考资料中修改注册表的方法,不…

python配置pip镜像

Python配置pip的镜像国内的网络通过pip下载软件包只有不到10k的下载速度。不仅下载的慢,还容易引发超时错误,导致下载失败。而将给pip配置国内的镜像源可以完美的解决这个问题。本文讲解了pip在windows和macos/linux的配置过程(在windows实操成功)一、 找到配置文件 1.wind…

滴滴出行:多元化出行服务创新与市场领先地位

一、产品概述 产品名称:滴滴出行 产品定位:滴滴出行是一款集多种出行方式于一体的综合出行服务平台,致力于为用户提供安全、便捷、高效的出行体验。二、功能描述 1.多样化出行服务:滴滴出行提供包括快车、专车、出租车、顺风车、代驾、公交、地铁、单车等多种出行方式,满足…

派胜OA ExpressOA 3.0 现已支持 Ubuntu 24.04 LTS

ExpressOA 3.0 跨平台,高性能,现代化的协同办公平台系统。ExpressOA 3.0 现已支持 Ubuntu 24.04 LTS - 世界上最流行的 Linux 操作系统。访问派胜OA官网:www.paioffice.com 随着 .NET 8 的推出,Ubuntu 在支持 .NET 社区方面迈出了重大的一步。 .NET 8 将在 Ubuntu 24.04 LT…

派胜OA ExpressOA 3.0 现已支持 openEuler 24.03 LTS

ExpressOA 3.0 跨平台,高性能,现代化的协同办公平台系统。ExpressOA 3.0 现已支持 openEuler 24.03 LTS - 面向数字基础设施的开源操作系统。访问派胜OA官网:https://www.paioffice.com/