首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从顶层包相对导入

是指在Python中,使用相对导入方式引用位于同一项目中不同包(package)中的模块(module)或子包(subpackage)。相对导入是相对于当前模块的位置进行导入,而不是相对于顶级包或项目根目录。

相对导入有两种方式:隐式相对导入和显式相对导入。

  1. 隐式相对导入(implicit relative import):隐式相对导入使用点号(.)表示相对路径,例如:
代码语言:txt
复制
from .subpackage import module

这表示从当前模块所在的包中的子包subpackage中导入module模块。

  1. 显式相对导入(explicit relative import):显式相对导入使用from关键字和点号(.)表示相对路径,例如:
代码语言:txt
复制
from . import module

这表示从当前模块所在的包中导入module模块。

相对导入的优势在于可以提高代码的可维护性和移植性,避免了使用绝对导入时需要硬编码包的绝对路径的问题。

相对导入在各类开发过程中常用于模块化开发、包的组织和管理,特别适用于大型项目或复杂项目的代码结构设计。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云官网:https://cloud.tencent.com/
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 云数据库(CDB):https://cloud.tencent.com/product/cdb
  • 云存储(COS):https://cloud.tencent.com/product/cos
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python相对导入

绝对路径导入格式为import a.b或者from a import b,相对路径导入格式为from . import b或者from ..a import b。...python2默认为相对路径导入,python3默认为绝对路径导入。...为使python2,3通用,建议采用相对路径导入from .a import b 一个目录存在__init__.py文件,则该目录成为一个。...中的一个模块可以采用相对路径导入,不影响模块功能;一个py脚本(未成为模块,即其目录及父目录内无__init__.py)可以采用相对路径导入,并以脚本模式运行。...还有句话不太理解: 如果一个模块被直接运行,则它自己为顶层模块,不存在层次结构,所以找不到其他的相对路径。 ---- 参考: Python 相对导入与绝对导入

2K10
  • 2018年8月13日相对导入和绝对导入的本地发布和网络发布

    有了之后才有了相对引入f这种引入方式的存在意义 绝对引入: 用到绝对引入的时候需要mark一下设为源文件夹,以下两种都是绝对引入的方式: import plane from plane import...test1 用import可以直接引入模块,用法:import 名 也可以直接引入里面的模块,用法;import 名.模块名,用import引入最低级也要是模块级别的文件 相对引入:  相对引入的命令必须要在终端中才能运行...相对引入直接引入模块: from . import test1      1.相对引入直接引入名: from . import 名 : 2.相对引入直接引入中的模块 from .plane.../方法名/类型名称 from .plane.utils import func func() #这是相对于父目录进行的相对引入,执行的时候不能直接在本模块中执行, 因为在本模块中执行的话python...解释器就会认为main.py就是顶层模块!

    61830

    Python相对、绝对导入浅析

    当模块是一个(package)的时候__package__==__name__,如果模块是非package并且是一个top-level模块那么__package__设置为空字符串,对于子模块那么__package...__import__,重点说一下level这个参数:  - 用来表示absolute还是relative导入;  - 如果为0则表示是absolute导入;  - 大于0表示relative导入相对导入的父目录的级数...这里之所以会报错就是因为__package__为空字符串则表示这是一个顶层的常规Python源码模块(top-level module),那么此时如果再有relative导入那么就没法进行模块的定位了。...code 4:如果是relative导入,那么需要计算相对的锚点是哪个,例如在spam.foo.test模块中执行import ..sub那么最后计算得出需要导入的模块是spam.sub。 ...这个函数的理论我们PEP-0302 Specification part 1: The Importer Protocol的第三段话中可以看到,大致的意思就是我们先做relative导入,  例如我们在

    1.2K70

    【Python】对绝对导入相对导入的理解的补充

    相对导入 ---- 在前一篇文章对相对导入的“相对”其实已经讲得比较清楚了,关键的一点是,“相对”是相对package的意思。...相对导入的常用语法: from .lib2 import func2 from . import lib2 另外还有直接导入上级的或者模块,但是这很容易出错,建议不要使用。...当然,前面一篇文章已经说过了,使用相对导入是有缺陷的,没法直接运行该文件进行测试。 2....建议的选择 ---- 前面已经看到了,无论是相对导入,还是绝对导入,都是有缺陷的,那我们已经怎么选择呢? 我的建议:优先使用相对导入。...: from test_lib import func1, func2 这样是可以正常运行的,也就是说,在__init__.py定义的变量函数什么的,或者引用其他模块的,在其他package可以通过名直接导入

    1.3K30

    Python创建导入

    Python导入 通过前面的学习我们知道,其实本质上还是模块,因此导入模块的语法同样也适用于导入。...无论导入我们自定义的,还是导入他处下载的第三方导入方法可归结为以下 3 种: import 名[.模块名 [as 别名]] from 名 import 模块名 [as 别名] from 名...注意,导入的同时,会在目录下生成一个含有 __init__.cpython-36.pyc 文件的 __pycache__ 文件夹。...例如: import my_packagemy_package.module1.display("http://c.biancheng.net/linux_tutorial/") 直接导入名,并不会将中所有模块全部导入到程序中...同样,既然也是模块,那么这种语法格式自然也支持from 名 import *这种写法,它和 import 名 的作用一样,都只是将该的 __init__.py 文件导入并执行。

    3.6K00

    IDEA导入jar

    一、导入 1、java项目在没有导入该jar之前,如图: 2、点击 File -> Project Structure(快捷键 Ctrl + Alt + Shift + s),点击Project...Structure界面左侧的“Modules”如图: 3、在 “Dependencies” 标签界面下,点击右边绿色的 “+”号,选择第一个选项“JARs or directories…”,选择相应的jar,...点“OK”,jar添加成功 4、点“OK”回到项目界面,IntelliJ IDEA自动提示需要添加import语句,利用 Alt+Enter 键快速添加import语句之后,项目成功编译 二、...打jar 1、点击 File -> Project Structure(快捷键 Ctrl + Alt + Shift + s),点击Project Structure界面左侧的“Artifacts”...Compiler,修改Target bytecode version版本为1.8 (2)Project Structure>Project/Modules版本改为1.8 4、去打包输出路径,找到jar

    13.4K20

    Python的导入机制

    当在模块中使用import语句的时候,不同的语法会导致不同的模块搜索导入方式,常见的导入方式如下: 绝对导入(absolute import) 显式相对导入(explicit relative import...) 隐式相对导入(implicit relative import) 需要注意的是,这些导入方式都是对于模块而言,对于一般的模块还是sys.path搜索入手。...# test.py print __name__ # output __main__ 当文件使用模块的方式运行的时候,文件的__name__属性则为模块的路径(top level script...关于隐式相对导入于绝对导入的例子如下: 结构: ├── main.py └── pac ├── __init__.py ├── __init__.pyc ├── explicit_import.py...explicit relative import 虽然绝对导入能够完成相对导入的所有功能,但是显式的相对导入也是可以接受的。

    1.3K10

    pycharm怎么把文件导入正常运行_python导入

    文件夹之间需要相互导入模块或者是导入自己的模块。有两种方法。 第一种方法 没有标记之前。导入自己模块support和fibo模块报错。...将当前文件夹标记为Sources Root之后,自身导入报错解决了。 在Phone中导入已标记的jinyuxin0318的模块不报错。...如果想要导入哪个模块。该模块所在文件夹就必须标记为Sources Root,其实标记为Sources Root就是加入到sys.path中。...第二种方法 将两个文件夹都变成一个。 分别在两个文件夹下创建一个__init__.py文件。标记当前文件夹是。...然后就以from 名 import 模块名的形式导入python文件。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

    2.3K40
    领券