python中引用上级目录中的模块

背景

有时候项目中最里层的模块需要引用上上上级目录中某个模块,使用其中的方法,大部分的引用最终执行的时候都会报错,这里做个记录。

方法

相对路径引用

这个相对是相对启动入口的那个文件,不建议用所以不写了,容易引起各种错误。

绝对路径引用

其实底层逻辑就是找到需要引用的那个文件的目录的绝对路径然后通过 sys.path.append(path)加进来就可以引入成功了,虽然引入的时候编辑器可能会提示错误但是执行起来是可以运行成功的,这个需要注意。

目录结构为如下,且启动类也就是调用类和tools文件夹同级目录

方法一

import sys
import os
CURRENT_DIR = os.path.split(os.path.abspath(__file__))[0]  # 当前目录
config_path = CURRENT_DIR.rsplit('/', 0)[0]  # 当前目录,可以通过修改分割最右边的第几个'/'来拿到第几层目录
sys.path.append(config_path + "/tools")
from rosbag_service import rosbag_check_service
from cyber_service import cyber_record_check_service

方法二

import path
import sys
src_folder = path.Path(__file__).abspath()
sys.path.append(src_folder.parent + "/tools")
from rosbag_service import rosbag_check_service
from cyber_service import cyber_record_check_service
posted @ 2022-12-09 10:43  orangeScc  阅读(1235)  评论(0编辑  收藏  举报