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

相关推荐
远方16092 天前
16-Oracle 23 ai-JSON-Relational Duality-知识准备
数据库·oracle·json
sc写算法2 天前
基于nlohmann/json 实现 从C++对象转换成JSON数据格式
开发语言·c++·json
酷爱码2 天前
Spring Boot项目中JSON解析库的深度解析与应用实践
spring boot·后端·json
不惑_2 天前
用 PyQt5 打造一个可视化 JSON 数据解析工具
开发语言·qt·json
漫游者Nova2 天前
PDF转Markdown/JSON软件MinerU最新1.3.12版整合包下载
pdf·json·markdown·mineru
snow@li3 天前
vue3+ts+vite:详细、完整的 tsconfig.json 示例 / 常见配置项及其用途
json·tsconfig.json
南郁3 天前
007-nlohmann/json 项目应用-C++开源库108杰
c++·开源·json·nlohmann·现代c++·d2school·108杰
紫乾20143 天前
idea json生成实体类
java·json·intellij-idea
愿你天黑有灯下雨有伞4 天前
MyBatis-Plus LambdaQuery 高级用法:JSON 路径查询与条件拼接的全场景解析
mysql·json·mybatis
wtsolutions4 天前
JSON to Excel 3.0.0 版本发布 - 从Excel插件到Web应用的转变
json·excel·json-to-excel·wtsolutions