如何从Python Wheel Package中读取JSON文件



我已经使用python3.9 setup.py bdist_wheel创建了一个.whl包,并且我已经检查了所有文件是否包含在这个.whl文件中。下面是.whl文件结构:

MyPackage/
- api/
- workflow
- cfg       
- data1.json
- data2.json
- data3.json
- scripts.py

和我试图读取json文件存在于api/workflow/cfg并将其添加到字典中,使用下面的函数从scripts.py:

def read_cfg(storage_dir="api/workflow/cfg") -> Dict[str, wd]:
wf: Dict[str, wd] = {}
for json_file in Path(storage_dir).glob("*.json"):
with open(json_file) as f:
definition = json.load(f)
wf[definition["name"]] = wd(**definition)
return wf

然而,它给出了一个空字典。我做错了什么,需要改变什么来读取json文件使用。whl文件?

当我尝试直接运行它而不使用.whl文件时,它会成功运行。

我找到了解决方案,我使用了所有JSON文件存在的相对路径。当以包形式运行项目时,JSON文件在系统中不作为实际文件存在。

So used -storage_dir = os.path.join(os.path.dirname(__file__), "cfg")

def read_cfg(storage_dir = os.path.join(os.path.dirname(__file__), "cfg")) -> Dict[str, wd]:
wf: Dict[str, wd] = {}
for json_file in Path(storage_dir).glob("*.json"):
with open(json_file) as f:
definition = json.load(f)
wf[definition["name"]] = wd(**definition)
return wf

相关内容

  • 没有找到相关文章

最新更新