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 @   orangeScc  阅读(1261)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
历史上的今天:
2021-12-09 WireMock-单测中的神器
2021-12-09 VUE3项目创建过程
2021-12-09 Ratelimiter-限流器的使用
2021-12-09 Caffeine-基于JDK的缓存
点击右上角即可分享
微信分享提示