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

py文件打包为exe可执行文件,涉及mysql连接失败以及找不到json文件

py文件打包为exe可执行文件,涉及mysql连接失败以及找不到json文件


项目场景:使用flask框架封装算法接口,并使用pyinstaller打包为exe文件。使用pyinstaller打包多文件的场景,需要自己手动去.spec文件中添加其他文件,推荐使用auto-py-to-exe,有可视化界面,比较方便,直接添加文件就行。


问题描述

问题1、算法本地运行,使用postman传参,mysql能够连接数据库成功。当打包成exe文件后,exe文件运行失败。
问题2、json文件已经包含在打包文件中,还是提示找不到。
错误显示
1、mysql连接失败,提示mysql.connector出现问题。
2、找不到json对应的文件路径


原因分析:

问题1、远程连接mysql库时,使用mysql-connector-python库,这个库可能与pyinstaller不兼容,导致连接频繁失败,找了一些相关的文章没有涉及,记录一下。
问题2、因为程序在运行时未能正确定位文件路径 ,即使文件被打包到了输出目录中,程序运行时的工作目录(os.getcwd())可能与你预期的不同。
例如:
在开发环境中,工作目录通常是脚本所在的目录。
在打包后的程序中,工作目录可能是用户启动程序的目录(如桌面或其他位置),而不是可执行文件所在的目录。


解决方案:

问题1解决方法:
使用纯 Python 实现的驱动程序:PyMySQL

pip install PyMySQL

然后在python中导入pymysql

import pymysql

这样可以避免 mysql.connector 中的复杂依赖问题。

问题2解决方法:
使用 sys._MEIPASSos.path.dirname(sys.executable) 获取程序的真实路径。

import os
import sys

def get_resource_path(relative_path):
    """获取资源文件的绝对路径"""
    if hasattr(sys, '_MEIPASS'):
        # PyInstaller 生成的临时目录
        base_path = sys._MEIPASS
    else:
        # 开发环境下的路径
        base_path = os.path.dirname(os.path.abspath(__file__))
    return os.path.join(base_path, relative_path)

# 示例:读取 JSON 文件
def read_from_json(path):
    full_path = get_resource_path(path)
    if not os.path.exists(full_path):
        raise FileNotFoundError(f"File not found: {full_path}")
    with open(full_path, 'r', encoding='utf-8') as file:
        return file.read()

在代码中调用 read_from_json("all_data_update.json") 时,get_resource_path 会自动处理路径问题。

关于auto-py-to-exe使用


安装和运行:

pip install auto-py-to-exe
auto-py-to-exe

可视化界面:
可视化UI界面

相关文章:

  • 使用PyQt5绘制水波浪形的柱状显示流量—学习QTimer+QPainterPath
  • Logo语言的区块链
  • Compose组件转换XML布局1.0
  • 基于SpringBoot的医院信息管理系统(源码+数据库)
  • 基于Python的人脸识别校园考勤系统
  • 初见TypeScript
  • 微信小程序—路由
  • Qt 入门 0 之 QtCreator 简介
  • 【微服务架构】SpringCloud Alibaba(八):Nacos 2.1.0 作为配置中心(Nacos的使用)
  • SpringAI+MCP协议 实战
  • 第六章:框架实战:构建集成向量与图谱的 RAG 应用
  • Qt的window注册表读写以及删除
  • VBA数据库解决方案第二十讲:SQL在VBA中几种常见的表达方式
  • 11.使用依赖注入容器实现松耦合
  • Gerapy二次开发:git项目实现变更拉取与上传
  • 蓝桥与力扣刷题(74 搜索二维矩阵)
  • Docker基础1
  • Jetpack Compose 生产级语言切换架构:ViewModel + Flow 的终极实现
  • 今是科技发布全新测序仪G-seq1M:以效率与精准引领基因测序新标杆
  • java后端开发day34--脑子空空如何无痛想起所有知识点--概念拟人化
  • q a wordpress插件下载/seo怎么弄
  • 长清做网站公司/注册网站查询
  • 网站建设宗旨/软文推广有哪些平台
  • 电商类网站怎么做推广/搜索引擎调词软件
  • 外网浏览网站/搜索排名竞价
  • 网站服务费怎么做分录/福建seo关键词优化外包