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文件中,并且能够在程序运行时被正确地读取。

相关推荐
Martin-Luo13 小时前
Vue3 通过json配置生成查询表单
javascript·vue.js·json
星尘库14 小时前
后端json数据反序列化枚举类型不匹配的错误
json
BXCQ_xuan14 小时前
软件工程实践四:MyBatis-Plus 教程(连接、分页、查询)
spring boot·mysql·json·mybatis
王维志15 小时前
LiteDB详解
数据库·后端·mongodb·sqlite·c#·json·database
ID_180079054731 天前
Python采集京东店铺所有商品数据,json数据返回
json
ljh5746491191 天前
mysql 必须在逗号分隔字符串和JSON字段之间二选一,怎么选
数据库·mysql·json
小孔龙1 天前
02.Kotlin Serialization 属性序列化控制
kotlin·json
Cachel wood2 天前
信息检索、推荐系统模型排序质量指标:AP@K和MAP@K
windows·搜索引擎·json·推荐系统·搜索
tebukaopu1482 天前
json文件转excel
json·excel
小孔龙3 天前
01.Kotlin Serialization - 基础用法
kotlin·json