我已经使用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