首页 > 其他分享 >pyinstaller 打包uvicorn的坑

pyinstaller 打包uvicorn的坑

时间:2024-08-09 15:05:08浏览次数:14  
标签:__ pyinstaller app uvicorn import 日志 server 打包

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 script
    log_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

 

 

标签:__,pyinstaller,app,uvicorn,import,日志,server,打包
From: https://www.cnblogs.com/yswsxf/p/18350788

相关文章

  • # Cocos通过Electron打包web应用后,在触屏一体机设备触摸滑动无效问题解决
    Cocos通过Electron打包web应用后,在触屏一体机设备触摸滑动无效问题解决已经很晚了,刚刚解决这个问题,还是想记录一下,因为刚刚接触cocos没多久,这个问题困扰了我很久。背景接手了一个答题小游戏,由于涉及敏感信息就不在这里截图了,交接到我手里的是用cocos开发的,之前从来没有接触......
  • 分享一个200年日历的黄道吉日sql数据打包供下载以及推荐一个好用的基于bootstrap的颜
    一、分享一个200年日历的黄道吉日sql数据打包    自己抓取的一套200年(1900-2100)全部日期的黄道吉日数据,分享出来,也在此备份以备以后自己要用。包括每天年月日,干支年,干支月,干支日,星期,阳历,农历,阴历月份,阴历日期,星座,胎神,五行,冲,煞,生肖,吉日,值......
  • 前端HBuilderX HTML5模版,打包成dist 部署
    首先需要修改utils中appConfig.js的ip+路径+域名,使用服务器部署,那么就用服务器的ip,prod-api可以自定义,根据自己的需求起别名找打HBuilderX最上方发行,然后点击找到自己需要的发版,我使用的是网站-PC手机H5找到manifest.json,如果没有域名,点击重新获取即可将获取到的域名......
  • 苹果离线打包机配置和打包
    1、虚拟机安装macOS虚拟机安装全过程(VMware)-腾讯云开发者社区-腾讯云给windows虚拟机装个mac·雪之梦1、安装苹果镜像去网上下载,打包机的镜像要和自己mac电脑上的保持一致。同时打包机的用户名也需要和自己的mac保持一致。2、安装xcode https://www.cnblogs.com......
  • linux与windows环境下qt程序打包教程
    一、演示环境qt5.14.2二、Linux2.1关联依赖文件2.1.1下载打包工具在Windows环境下可以使用QtCreator自带的官方工具进行打包,而Linux环境下没有官方工具,需要借助第三方工具才能打包。如:linuxdeployqt、CQtDeployer、AppImageKit,甚至是自己编写shell将依赖导入指定目录......
  • 没有名为“pyinstaller”的模块
    我想为我的应用程序创建一个安装程序,但是当我尝试运行我的代码时,出现一个错误,提示即使我安装了此模块,也没有模块“pyinstaller”。此导入会导致我的程序出现错误:importpyinstaller.__main__我正在使用spyder来运行python-3.8.5,但是当我运行我的代码时它会显示给我此......
  • Linux系统打包Qt
    因为使用了QWebEngineView,所以遇到了打包问题,记录一下我的失败过程。等以后有机会再接着弄吧目前知道的打包方式有三种:1.linuxdeplot+linuxdeploy-plugin-qt2.linuxdeplotqt+appimagetool3.使用脚本,收集ldd显示的依赖库 第一种(linuxdeplot+linuxdeploy-plugin-qt),......
  • Android逆向:修改APK并重打包签名
    在Android逆向中,经常需要对APK修改,然后重新打包并签名。这篇文章中,介绍了如何使用各个工具来完成这个过程。各个步骤以及所需工具:解压APK文件; 工具:apktool进行修改;     工具:看修改需求重新打包APK; 工具:apktool将APK对齐;   工具:zipalign生成密钥文件,并对AP......
  • APP逆向 day27unidbg打包
    一.前言上三次我们把unidbg的基础到进阶都讲完了,现在我们来讲unidbg的大打包,打包分为两种打包,一种是传参一种是不传参,我根据往期案例挑几个和大家讲二.不传递参数这个我们拿车智赢举例子2.1配置和编译点击这里 再点击这几个选项点击应用,这样就是配置好了再这么选......
  • maven 中 scope标签的作用以及引入本地jar包打包方法
    1.scope标签的作用2、使用system标签项目三方jar存放位置结构:pom.xml中引入三方jar:<dependency><groupId>test</groupId><artifactId>testa</artifactId><version>0.0.1</version><scope>system</scope><s......