pyinstaller打包json文件的方法

最近在构造一个系统,包含了json文件。

将json文件打包进最后的exe文件中,步骤如下:

步骤 1: 使用 --add-data 选项

当使用 PyInstaller 从命令行打包程序时,可以使用 --add-data 选项来指定需要包含的数据文件。这个选项的语法在不同操作系统上略有不同。

对于Windows系统,可以这样使用:

bash 复制代码
pyinstaller --onefile --windowed --add-data "data.json;." sele.py

这里,"data.json;." 表示将当前目录(源代码所在目录)的 data.json 文件添加到可执行文件所生成的临时目录下。分号用于分隔源文件路径和目标文件路径。

需要注意的是,对于Linux和macOS系统,我们应该使用冒号而不是分号:

bash 复制代码
pyinstaller --onefile --windowed --add-data "data.json:." sele.py

步骤 2: 在代码中指定资源路径

当使用PyInstaller打包后,程序的工作目录可能会改变,因此,直接使用相对路径访问资源文件可能会失败。要解决这个问题,最好的办法是在代码中动态地确定资源文件的路径。例如:

python 复制代码
import sys
import os

# 判断程序是不是用 PyInstaller 打包的
if getattr(sys, 'frozen', False):
    # 如果是,使用这个路径
    application_path = sys._MEIPASS
else:
    # 如果不是,使用普通的Python环境路径
    application_path = os.path.dirname(os.path.abspath(__file__))

data_path = os.path.join(application_path, 'data.json')

# 现在可以使用 data_path 来访问 data.json 文件
with open(data_path, 'r') as file:
    data = file.read()

这段代码首先检查程序是否被PyInstaller打包(通过检查 sys.frozen)。如果是,它使用 sys._MEIPASS 目录作为应用程序的工作路径。这个目录是PyInstaller创建的临时目录,用于存储所有包含的资源文件。如果程序没有被打包,它就使用脚本的当前目录。

按照上述步骤,可以确保 data.json 文件被正确包含在最终的exe文件中,并且能够在程序运行时被正确地读取。

相关推荐
xbzb2 天前
镜像到底存在哪:/var/lib/docker 的四级映射与 daemon.json 配置
docker·容器·json·镜像·daemon.json·四级
坤坤子吖2 天前
Linux网络编程:自定义应用层协议与 JSON 序列化
linux·服务器·网络·c++·笔记·json
code2cat3 天前
【随笔】结构化输出:JSON格式过关,业务数据就能入库吗
json·大语言模型
Hello_Pyhx6 天前
NWinfo 导出 Windows 硬件信息:从 JSON 报告到缺项排查
windows·json
程序员大阳7 天前
副队长JavaScript教程(66)-本地存储实战:待办事项网页的开发
javascript·json·实战·待办事项·本地存储·案例
视觉小萌新8 天前
AI Class 3 · Chapter 2-3:函数、异常、文件读写+JSON / JSONL 读写(小白版)
人工智能·python·json
翊众建站9 天前
用 JSON-LD 给企业官网做结构化数据:LocalBusiness 与 FAQPage 实践笔记
人工智能·搜索引擎·json
Patrick_Wilson9 天前
读懂一个 Go JSON 处理函数:从输入数据追踪结构体、校验与错误返回
go·json·编程语言
January120710 天前
【AI方法笔记】2026-11-02:模型流式吐 JSON 时,前端会遇到四种崩法
前端·人工智能·笔记·json