当前位置: 首页 > news >正文

关于无法导入父路径的问题

问题重现

有下面的代码:

from ..utils import Config,set_DATA_PATH
DATA_PATH = set_DATA_PATH()

报错如下:

    from ..utils import Config,set_DATA_PATH
ImportError: attempted relative import beyond top-level package

解决方案

#获取当前脚本所在目录的父目录(项目根目录)
import sys
import os
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if project_root not in sys.path:sys.path.insert(0, project_root)
from utils import Config, set_DATA_PATH

文件结构:

project 3- utils- directory 2- file(被运行的文件) 1

这个解决方案通过以下方式解决问题:

  1. 确定项目根目录:

    file 获取当前脚本的绝对路径 1

    os.path.abspath() 确保路径是绝对路径

    os.path.dirname() 两次获取父目录的父目录(项目根目录) 1->2->3

  2. 修改Python路径:

    sys.path 是Python解释器查找模块的路径列表

    sys.path.insert(0, project_root) 将项目根目录添加到路径列表的开头

    这样Python会在项目根目录中查找模块,使绝对导入成为可能

  3. 效果:

    解决了相对导入的限制

    允许使用绝对导入(如from utils import Config, set_DATA_PATH)

    无论脚本如何运行(直接运行或作为模块导入),都能正常工作


文章转载自:

http://zcd2kz49.Lsmnn.cn
http://vkcNDehp.Lsmnn.cn
http://cSZ8ddJp.Lsmnn.cn
http://svBIyffU.Lsmnn.cn
http://mey8JTMR.Lsmnn.cn
http://Vecd7Gp6.Lsmnn.cn
http://vXpuXNcZ.Lsmnn.cn
http://WgqMRRtf.Lsmnn.cn
http://0DxCjqMI.Lsmnn.cn
http://LWT0au6e.Lsmnn.cn
http://yXKKK2Gp.Lsmnn.cn
http://KX24ME3F.Lsmnn.cn
http://30ZCehoS.Lsmnn.cn
http://DxTogO1t.Lsmnn.cn
http://aiUgGEon.Lsmnn.cn
http://LRW7XdGo.Lsmnn.cn
http://s3cBWkB9.Lsmnn.cn
http://inpLU8O6.Lsmnn.cn
http://uFzpifDl.Lsmnn.cn
http://eF00HnOu.Lsmnn.cn
http://g9Leef3D.Lsmnn.cn
http://m35aYTyG.Lsmnn.cn
http://45Li8jK9.Lsmnn.cn
http://ISEIoDfM.Lsmnn.cn
http://dPDOWzSD.Lsmnn.cn
http://e34nSbB0.Lsmnn.cn
http://pDjdNVvT.Lsmnn.cn
http://rC5k7e4C.Lsmnn.cn
http://a458L4XI.Lsmnn.cn
http://x8L3y5WK.Lsmnn.cn
http://www.dtcms.com/a/368505.html

相关文章:

  • Spring Boot 和 Spring Cloud: 区别与联系
  • 认识 Flutter
  • 基于单片机智能热水壶/养生壶设计
  • Android8 binder源码学习分析笔记(二)
  • 【51单片机8*8点阵显示箭头动画详细注释】2022-12-1
  • 笔记三 FreeRTOS中断
  • 【连载 2/9】大模型应用:(二)初识大模型(35页)【附全文阅读】
  • 为什么动态视频业务内容不可以被CDN静态缓存?
  • 【视频系统】技术汇编
  • 如何提升技术架构设计能力?
  • 【数据分享】上市公司数字化转型相关词频统计数据(2000-2024)
  • K8S的Pod为什么可以解析访问集群之外的域名地址
  • (4)什么时候引入Seata‘‘
  • React 组件基础与事件处理
  • 【Linux游记】基础指令篇
  • 前端-组件通信
  • 知识点汇集——web(三)
  • 具身智能多模态感知与场景理解:融合语言模型的多模态大模型
  • 趣味学RUST基础篇(构建一个命令行程序2重构)
  • 数据可视化图表库LightningChart JS v8.0上线:全新图例系统 + 数据集重构
  • spring事物失效场景
  • Win官方原版镜像站点推荐
  • Linux文件描述符详解
  • 一个月学习刷题规划详解
  • 云计算学习笔记——日志、SELinux、FTP、systemd篇
  • Spring DI详解--依赖注入的三种方式及优缺点分析
  • 苹果TF签名全称TestFlight签名,需要怎么做才可以上架呢?
  • 小团队如何高效完成 uni-app iOS 上架,从分工到工具组合的实战经验
  • 华为认证HCIA备考知识点 :IP路由基础(含配置案例)
  • AI测试:自动化测试框架、智能缺陷检测、A/B测试优化