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

包的相对导入

包的相对导入(relative import),就是在一个包(package)里,让模块A引用模块B,不是用绝对路径(从顶层包开始写全路径),而是用“相对”位置(当前文件夹、父文件夹等)。

mypkg/mod_a.pysubpkg/__init__.pymod_b.py

想在 subpkg/mod_b.py 里导入 mod_a.py 的内容:

绝对导入

from mypkg import mod_a

有时需要在mod_b.py 添加项目的路径

import sys
sys.path.append(os.path.dirname(os.path.dirname(__file__)))# 或者
cur_dir = os.path.dirname(os.path.abspath(__file__))  # 当前脚本目录
parent_dir = os.path.dirname(cur_dir)  # 上级目录
sys.path.append(parent_dir)

相对导入

from .. import mod_a  # 两个点表示“父包”
  1. 必须是包(有__init__.py)
    相对导入只对“包”生效,普通脚本不能直接相对导入。

  2. 不能直接用 python xxx.py 启动子模块
    相对导入要求你用包的方式运行。否则会报错 ImportError: attempted relative import with no known parent package。

正确方式:在包的上级目录,使用:

python -m mypkg.subpkg.mod_b

这样 Python 能知道“父包”是谁。

  1. 相对路径只适用于同一个包下的模块之间的引用,不适用于跨包、跨项目的导入。
相对导入的常见写法
  • from . import xxx    # 当前目录(包)

  • from … import xxx   # 上一级包

  • from …other_pkg import xxx # 上一级包里的other_pkg

http://www.dtcms.com/a/360234.html

相关文章:

  • Android开发简介
  • Redis常见数据类型及应用场景
  • Pytest 插件介绍和开发
  • 极客时间AI 全栈开发实战营毕业总结(2025年8月31日)
  • NCCL-TEST ib集群测试UCX代替方案
  • mit6.031软件构造 笔记 Testing
  • ROI、 binning、下采样功能区别
  • windows编译minicap.so文件
  • 由题构造 嵌入汇编(汇编)
  • NAS Docker 安装N8N
  • 计算机视觉与深度学习 | 双目立体特征提取与匹配算法综述——理论基础、OpenCV实践与MATLAB实现指南
  • 猛犸Lark max 无线麦克风录音爆音问题的解决
  • 【STC库函数】使用芯片自带的EEPROM来保存掉电不丢失的数据
  • 开发常用工具专栏
  • 赵玉平《梁山政治》读书笔记(下部)
  • wifi控制舵机
  • WinExec
  • Nginx反向代理及配置
  • c++ 线程局部存储(Thread-Local Storage,TLS)
  • Langflow Memory 技术深度分析
  • java--浅拷贝深拷贝
  • Introduction to GIS —— Chapter 3(Vector Data Model)
  • 雪花算法生成分布式ID
  • AI 智能体汇总,自动执行任务的“真 Agent”
  • 动态规划入门(三):一些经典动态规划模型
  • 赵玉平《刘备谋略》读书笔记(下部)
  • 小迪自用web笔记22
  • 01背包day35
  • 设计模式 | 常见的设计模式(单例、工厂、代理、适配器、责任链等等)
  • VisionProC#联合编程火花塞距离检测与VisionPro操作