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

相关推荐
朴拙数科5 小时前
MCP(模型上下文协议)、A2A(Agent2Agent)协议和JSON-RPC 2.0的前沿技术解析
网络协议·rpc·json
Bardb14 小时前
05--MQTT物联网协议
linux·服务器·阿里云·json
z_mazin20 小时前
模拟浏览器指纹:生成与定制特定属性
开发语言·前端·javascript·json
执键行天涯2 天前
在vue项目中package.json中的scripts 中 dev:“xxx“中的xxx什么概念
前端·vue.js·json
x-cmd2 天前
x-cmd install | jellex - 用 Python 语法在终端里玩转 JSON 数据!
开发语言·python·json·命令行终端
Bartender_Jill2 天前
【Claude AI大语言模型连接Blender生成资产】Windows安装Blender MCP教程
人工智能·语言模型·json·游戏引擎·blender
栩栩云生3 天前
📥 x-cmd install | jellex - 用 Python 语法在终端里玩转 JSON 数据!
python·json·命令行
yzhSWJ3 天前
MySQL 中查询 VARCHAR 类型 JSON 数据的
mysql·adb·json
小旺不正经3 天前
txt、Csv、Excel、JSON、SQL文件读取(Python)
sql·json·excel
lilye664 天前
程序化广告行业(80/89):近年发展动态与技术标准演进
sql·json·rabbitmq