You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含MySQL与本地图片的Python代码打包为真正独立的EXE?

把Python项目打包成完全独立EXE的实操步骤

你遇到的问题分三个核心:本地图片找不到、其他电脑没MySQL服务器、没有MySQL数据,一个个解决:

一、搞定本地图片的打包问题

打包成--onefile后,PyInstaller会把所有文件解压到临时文件夹,原来的本地路径就失效了,要这么改:

  1. 把所有用到的.png图片移到和你的主Python脚本(比如main.py)同一个文件夹里。
  2. 修改代码里加载图片的部分:
    先在代码开头导入sys和os模块:
    import sys
    import os
    import tkinter as tk
    
    然后把原来加载图片的代码,替换成下面的逻辑(比如你原来的图片叫logo.png):
    # 获取资源路径:如果是打包后的EXE,用临时目录;否则用当前文件夹
    def get_resource_path(relative_path):
        try:
            # PyInstaller打包后会自动设置这个变量
            base_path = sys._MEIPASS
        except Exception:
            base_path = os.path.abspath(".")
        return os.path.join(base_path, relative_path)
    
    # 加载图片
    img = tk.PhotoImage(file=get_resource_path("logo.png"))
    
  3. 打包时告诉PyInstaller把图片加进去,用--add-data参数(Windows系统用分号分隔路径):
    pyinstaller --onefile --add-data "logo.png;." main.py
    
    如果有多个图片,直接写*.png;.,比如--add-data "*.png;."

二、解决MySQL依赖的问题(新手首选换SQLite)

其他电脑没装MySQL服务器,没法连接你的数据库,最省心的办法是把MySQL换成SQLite——这是个文件型数据库,不需要服务器,直接把数据库文件打包进EXE就行:

  1. 把你MySQL里的数据导出成SQLite数据库文件(比如mydata.db):
    • 可以用Navicat、DBeaver这类数据库工具,直接把MySQL的数据迁移到SQLite;
    • 或者手动把MySQL的表结构和数据转换成SQLite的SQL语句,执行后生成.db文件。
  2. 修改代码里的数据库连接部分,替换掉mysql.connector:
    原来的MySQL连接代码大概是这样:
    import mysql.connector
    conn = mysql.connector.connect(host="localhost", user="xxx", password="xxx", database="xxx")
    
    换成SQLite的连接(Python自带sqlite3模块,不用额外安装):
    import sqlite3
    # 同样用上面的get_resource_path函数获取数据库文件路径
    db_path = get_resource_path("mydata.db")
    conn = sqlite3.connect(db_path)
    
  3. 把mydata.db也放到主脚本文件夹,打包时用--add-data加进去:
    pyinstaller --onefile --add-data "*.png;." --add-data "mydata.db;." main.py
    

三、确保customtkinter等模块被正确打包

customtkinter这类第三方模块有时候会被PyInstaller漏掉,打包时加上--collect-all customtkinter参数,确保它的所有资源都被打包:
最终的完整打包命令(Windows):

pyinstaller --onefile --collect-all customtkinter --add-data "*.png;." --add-data "mydata.db;." main.py

最后验证

打包完成后,把生成的EXE从dist文件夹里单独拿出来,放到其他没有Python、MySQL的电脑上测试,应该就能正常运行了。

内容的提问来源于stack exchange,提问作者Mohamed Junaid Samiullah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 04:35:15