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

如何在Python包data子模块中共享file.json内容并解决路径问题

解决Python包内子模块共享JSON文件内容的问题

问题分析

你之前的代码存在两个核心问题:

  1. 读取JSON后赋值的变量f未作为模块属性导出,子模块无法访问;
  2. 使用绝对路径导致包打包成zip提交到Dataproc时路径失效——zip内的文件路径和本地绝对路径完全不同。

解决方案

1. 修正data/__init__.py代码

用包内相对路径读取JSON,并将数据作为模块级变量导出,确保所有子模块都能直接引用:

# data/__init__.py
import json
from pathlib import Path

# 获取当前__init__.py所在的data目录路径
data_dir = Path(__file__).parent
# 拼接file.json的完整路径
json_file_path = data_dir / "file.json"

# 读取并解析JSON,将数据赋值给模块级变量(命名为json_data方便识别)
with open(json_file_path, "r") as f:
    json_data = json.load(f)

这里用Path(__file__).parent能精准定位到data目录,不管包部署到什么环境(包括Dataproc的zip包),路径都能正确识别。

2. 子模块中访问JSON数据

在module_data1.py、module_data2.py等子模块里,直接从data模块导入导出的变量即可:

# data/module_data1.py
from . import json_data

# 直接使用json_data
print(json_data["some_key"])

如果子模块需要从外部包路径引用,也可以用完整导入路径:

from package.data import json_data

这样不管包是本地运行还是打包成zip提交到Dataproc,都能正常读取JSON内容,且子模块可以直接访问数据。

内容的提问来源于stack exchange,提问作者Ala Tarighati

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:11:15