当我们导入某个模块文件时, Python 解释器去哪里找这个文件呢?只有找到这个文件才能读取、装载运行该模块文件。
它一般按照如下路径寻找模块文件(按照顺序寻找,找到即停不继续往下寻找):

  1. 内置模块
  2. 当前目录
  3. 程序的主目录
  4. pythonpath 目录(如果已经设置了pythonpath 环境变量)
  5. 标准链接库目录
  6. 第三方库目录(site-packages 目录)
  7. .pth 文件的内容(如果存在的话)
  8. sys.path.append()临时添加的目录
    当任何一个python 程序启动时,就将上面这些搜索路径(除内置模块以外的路径)进行收集,放到sys 模块的path 属性中(sys.path)。

python 获取工程路径 python获取当前项目路径_json

一、使用 pathlib

# -*- coding: utf-8 -*-

import sys
import os
import pathlib

# 当我们导入某个模块文件时, Python 解释器去哪里找这个文件呢?只有找到这个文件才能读取、装载运行该模块文件。
curr_path = pathlib.Path(__file__).resolve().parents[0]	# 获取当前文件所在目录的绝对路径
parent_path = pathlib.Path(__file__).resolve().parents[1]	# 获取当前文件所在目录的父级目录的绝对路径

sys.path.append(str(curr_path))	# sys.path.append()临时添加的目录
sys.path.append(str(parent_path ))	# sys.path.append()添加临时的依赖模块搜索目录

json_path = os.path.join(abs_path, './raw_data/服饰_50k.json')  # 原始数据地址

二、使用os.path

# -*- coding: utf-8 -*-

import sys
import os
import pathlib

# 当我们导入某个模块文件时, Python 解释器去哪里找这个文件呢?只有找到这个文件才能读取、装载运行该模块文件。
curr_path = os.path.dirname(os.path.abspath(__file__))	# 获取当前文件所在目录的绝对路径
parent_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))	# 获取当前文件所在目录的父目录的父目录的绝对路径

sys.path.append(curr_path)	# sys.path.append()临时添加的目录
sys.path.append(parent_path)	# sys.path.append()添加临时的依赖模块搜索目录

json_path = os.path.join(abs_path, './raw_data/服饰_50k.json')  # 原始数据地址