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

Python模块的绝对与显式相对导入

在Python中,导入模块时可以使用绝对导入和显式相对导入。这两种导入方式的主要区别在于导入模块的方式和导入路径的指定。

绝对导入

绝对导入是指从项目的根目录开始导入模块。这种导入方式使用点号(.)表示包的层次结构,例如:

代码语言:python
代码运行次数:0
复制
from my_package.my_module import my_function

绝对导入的优势在于它可以明确地指定导入的模块路径,避免了因为不同目录下存在同名模块而导致的混淆。此外,绝对导入还可以避免因为sys.path的改变而导致的导入错误。

显式相对导入

显式相对导入是指从当前模块所在的目录开始导入模块。这种导入方式使用点号(.)表示当前目录及其子目录,例如:

代码语言:python
代码运行次数:0
复制
from .my_module import my_function

显式相对导入的优势在于它可以简化导入路径,并且在包的内部重组时更加灵活。此外,显式相对导入还可以避免因为sys.path的改变而导致的导入错误。

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

以上产品可以帮助用户在云计算领域进行开发、测试、部署和运维等工作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python相对、绝对导入浅析

Python也提供了一个import hooks的模板,叫ihooks(/usr/lib/python2.7/ihooks.py),也即是我们后面要重点分析的一个模块。 ...__import__,重点说一下level这个参数:  - 用来表示absolute还是relative导入;  - 如果为0则表示是absolute导入;  - 大于0表示relative导入,相对导入的父目录的级数...这里之所以会报错就是因为__package__为空字符串则表示这是一个顶层的常规Python源码模块(top-level module),那么此时如果再有relative导入那么就没法进行模块的定位了。...code 4:如果是relative导入,那么需要计算相对的锚点是哪个,例如在spam.foo.test模块中执行import ..sub那么最后计算得出需要导入的模块是spam.sub。 ...,就是导入完整模块路径名中的第一个模块,类似就是如果我们要导入spam.foo.test,那么这个函数是先导入spam模块。

1.2K70
  • 【Python】对绝对导入与相对导入的理解的补充

    相对导入 ---- 在前一篇文章对相对导入的“相对”其实已经讲得比较清楚了,关键的一点是,“相对”是相对package的意思。...相对导入的常用语法: from .lib2 import func2 from . import lib2 另外还有直接导入上级的包或者模块,但是这很容易出错,建议不要使用。...绝对导入 ---- 前一篇已经提到,理解绝对导入,最重要的就是理解sys.path这个环境变量,绝对导入的时候,会按顺序在这个path指定的路径中查找。...建议的选择 ---- 前面已经看到了,无论是相对导入,还是绝对导入,都是有缺陷的,那我们已经怎么选择呢? 我的建议:优先使用相对导入。...__all__变量与__init__.py文件 ---- 关于包和模块还有两点是值得说道说道的: 4.1 __all__变量 直接看代码,lib2.py: __all__ = ['func2']

    1.3K30

    【Python】模块导入 ① ( Python 模块简介 | 模块概念 | 模块作用 | 模块特点 | 常见的 Python 模块 | Python 模块导入 | Python 模块导入语法 )

    可执行代码 2、模块作用 Python 提供了很多模块 , 每个模块都可以实现一些功能 ; 可以将 模块 作为 工具包 使用 , 每个工具包封装了不同的工具 , 如 : time 模块就封装了与 时间...模块 Python 自带的 标准库 模块 , 包含了Python中常用的函数和类等代码片段 ; 除了标准库之外,还有大量的第三方模块库 模块 ; 常见的 Python 模块 : time 模块 : 提供了与时间有关的函数..., 可以用于生成随机数 ; os 模块 : 提供了操作文件系统的函数 , 包括文件 / 目录操作等 ; sys 模块 : 提供了与 Python 解释器交互的函数 , 包括获取命令行参数 / 退出Python...; 二、Python 模块导入 1、Python 模块导入语法 Python 模块导入语法 : [from 模块名称] import [模块 | 类 | 变量 | 函数 | *] [as 别名] 上述语法中...别名 : 在 导入指定模块中的指定名称对应的 类 / 变量 / 方法 的基础上 , 为导入的内容设置一个别名 , 可以直接使用别名访问导入的内容 ;

    25620

    Python的包与模块导入问题

    导入报错 python中导入包与模块时,一般会遇到两个问题: 1、ValueError: attempted relative import beyond top-level package 2、ModuleNotFoundError...1、使用相对路径导入导致的顶级层次报错,python中以当前运行的脚本所在目录作为顶层层次,比如运行run.py时,A\B都是顶级层次,不能跨越顶级层次引用包或模块!...、每个项目应该只有一个能独立运行的py文件,这是项目的主函数入口,该文件应该位于项目的最外层,这样的话运行时顶级层次最高,可以导入项目所有的模块和包了 2、项目内部可能分了很多模块来组织功能,但是内部的模块一般不能独立运行...单独执行内部模块的文件时,可能会因为跨目录导入模块导致运行出错。...3、如果内部模块一定要跨顶级层次导入,则应该使用sys.path.append来将路径添加到python的包查找路径中 4、遇到类似问题,非常轻易的定位,第一步分析当前的顶级层次,是否有跨顶级层次导入,

    2.4K40

    Python模块的导入

    前言在 Python 中,模块是组织代码的重要结构。通过模块,程序员可以更高效地管理大型项目,降低代码的复杂度,提高代码的可读性和可维护性。本文详细讲解了模块的定义及其导入方式。...本篇文章参考:黑马程序员一、什么是模块?Python 模块(Module)是一个 Python 文件,以 .py 结尾。模块可以包含函数、类和变量以及可执行的代码。...Python标准库中包含了众多的模块,为开发者提供了广泛的功能支持,而自定义模块则允许开发者根据需求构建特定功能。...time # 导入Python内置的time模块(即time.py这个代码文件)print("你好!")...等待5s后的运行结果:使用 import time 导入整个 time 模块。调用模块中的函数(如 sleep),需使用模块名.函数名的形式。注意事项:在Python中.

    10411

    ☞【案例】大数据与数据挖掘的相对绝对关系

    越来越多的设备带着更加精密的传感器,传回愈发难以驾驭的数据流,于是人们需要日益强大的分析能力。在气象学、石油勘探和天文学等领域,数据量的井喷式增长对更高层次的分析和洞察提供了支持,甚至提出了要求。...;表面风压数据来自NASA的QuikScat任务;海平面温度数据来自NASA/日本宇宙航空研究开发机构的先进微波扫描辐射计-地球观测系统;海冰浓度和速度数据来自被动微波辐射计;温度和咸度分布来自船载、系泊式测量仪器...绿色和蓝色区域则与之关联较弱或者根本没有关联。...等到处理能力一次相对较小的改变令结果出现突破性的进展,克拉考尔补充道,大数据的应用可能会经历一次“相变”。 “大数据”是一个相对的说法,不是绝对的,克拉考尔指出。...在我们无法觑探之处,决策在没人理解输入与输出、数据与决策之间的关系的情况下被自动做出。“这正是我所从事的领域,”克拉考尔回应道,“我的研究对象是宇宙中的智能演化,从大爆炸到大脑。我毫不怀疑你说的。”

    81980

    【Python】模块导入 ③ ( 模块导入语法 | from 导入部分模块功能 | 为导入的模块设置别名 | import 导入模块设置别名 | from 导入模块设置别名 )

    一、导入模块部分内容 - from 导入部分模块功能 1、from 导入部分模块功能 在导入模块时 , 有时不需要使用模块的完整功能 , 只需要导入指定的部分功能即可 , 这样也符合最少知识设计原则 ;...功能名称 ; 通过该方式导入的模块 , 只会导入模块中的部分指定功能 , 导入后 , 可以直接使用 specific_name 模块中 指定的 功能名称 进行访问 ; 访问前 不必 使用 模块名称.功能名称...# 使用时间模块的 sleep 休眠功能 sleep(3) print("结束执行") 执行结果 : D:\001_Develop\022_Python\Python39\python.exe D:.../002_Project/011_Python/HelloPython/Hello.py 开始执行 结束执行 Process finished with exit code 0 二、为导入的模块设置别名...---- 1、设置别名语法 Python 中还可以为导入的 模块 / 模块部分功能 设置别名 , 设置别名的语法如下 : import module_name as renamed_name from

    29610

    2018年8月13日包的相对导入和绝对导入,包的本地发布和网络发布

    可以通过python setup.py install命令可以直接把构建完毕的文件当成第三方模块进行安装到本机 执行命令进行包的打包发布 python setup.py sdist REMARK:打包的文件...***            相对引入和绝对引入 有了包之后才有了相对引入f这种引入方式的存在意义 绝对引入: 用到绝对引入的时候需要mark一下设为源文件夹,以下两种都是绝对引入的方式: import...引入最低级也要是模块级别的文件 相对引入:  相对引入的命令必须要在终端中才能运行,输入的命令是:python -m 父目录名.main.py,并且引入的东西都需要 先在__init__文件中事先定义才能正常运行.../方法名/类型名称 from .plane.utils import func func() #这是相对于父目录进行的相对引入,执行的时候不能直接在本模块中执行, 因为在本模块中执行的话python...是唯一一个,不能再相对引入, 所以为了不报错,采用这种引用方式的正确的执行命令是在终端中输入:python -m 父目录名.main.py,找到参照物才能正确执行 有了from的引入方式之后可以引入比模块名更加细致的东西

    61930

    Python文件操作—— 补充(“相对路径”与“绝对路径”的区别)

    接着第一篇(Python文件操作),这一篇会接着补充 上一篇没有出现的知识 目录 一、路径问题 1、什么是"绝对路径"?...总结 一、路径问题 我们在进行文件操作的时候,难免会遇到路径问题,路径分为两种:绝对路径和相对路径,所谓路径就是你要访问的对象的位置,下面我就来给大家介绍一下这两者的区别 1、什么是"绝对路径"?...绝对路径:一般我们下载一个文件,系统会默认你下载到C盘中,但是你不希望C盘占用一些不必要的文件,这个时候,你就会想要把文件存到其他位置,就拿我使用的编辑器 Pycharm 来说吧,我们找到它,点击查看它的属性...此图中,我们可以看到,红箭头所标的地方即是 Pycham 的 绝对路径,也就是文件在我们本地电脑上的存储具体位置 二、亲身体会什么是"相对路径" 在介绍相对路径之前,我还得介绍一个概念"根目录","...以后写大型程序的时候,我们用到的都是相对路径,这样的话,。我们写的程序才可以在别人的电脑上运行

    1.4K30

    Python import导入模块 - reload() 导入的内容

    redis-stable/ -rw-r--r--. 1 root root 1993430 Dec 5 01:37 redis-stable.tar.gz In [5]: 路径搜索 从上面列出的目录里依次查找要导入的模块文件...'' 表示当前路径 列表中的路径的先后顺序代表了python解释器在搜索模块时的先后顺序 程序执行时添加新的模块路径 ## 首先给路径添加一个 /home 的路径 In [5]: sys.path.append...重新导入模块 模块被导入后,import module不能重新导入模块,重新导入需用reload 要演示这个示例,首先需要写一个py文件,用来导入演示: [root@server01 test]# cat...多模块开发时的注意点 下面这里准备了几个py模块的文件,思考一下,关于import common 变化为 from common import HANDLE_FLAG之后会产生什么样的结果?...HANDLE_FLAG,那么单独引入HANDLE_FLAG则不是一个共享变量,当有其中一个模块如果修改了 HANDLE_FLAG的话,那么这个修改后的变量就是这个py模块的局部变量了。

    3.1K20

    Python(三)安装扩展库与模块导入

    1、我们使用pip来管理Python扩展库,常用的pip命令使用方法 pip命令示例 说明 pip install SomePackage 安装SomePackage模块 pip list 列出当前已安装的所有模块...命令安装python扩展库 ?...3、创建虚拟环境,如果有可能根据需要使用不同版本的扩展库,这就需要使用Python创建一个虚拟环境。 演示创建和使用虚拟环境 (1)创建 ? ? (2)使用虚拟环境 ?...4、Python导入模块有两种方式 (1)import 模块名 [as 别名] 使用时需要在对象之前加上模块名作为前缀,即“模块名.对象名”。...(2)from 模块名 import 对象名[as 别名] 不需要模块名作为前缀,导入方式可以减少查询次数,提高访问速度。 ? 5、编写自己的模块和包(这一块内容后续更新)

    1.1K10

    Python模块导入区别与常用函数案例

    作者:Nature 出品:AI机器思维 Python中包含很多模块,每个领域的应用有关专家开发了相应的模块,必须将其导入到python中,然后才能使用。...案例1:Import math与from math import *的区别(python案例) from math import *可以使程序更简单,调用函数时更便捷,以sqrt()函数为例。...可以指定导入math模块的函数,使用前可以通过dir()查看模块包含的内置函数,可以使用help()函数了解某一个数学函数的详细信息。 ?...案例2:python函数的默认精度为16位小数,例如下面17/6可以看到后面16位小数。 ? 对于大多数与金融相关的问题或研究这样的精度基本够用也够高了。可以使用round()函数来改变精度。...案例3:对于导入的模块更加简洁,可以给模块取别名,如math模块别名我们取m ? 案例4:print()函数,通过此函数在屏幕上显示一些内容。如显示圆周率Л值。 ?

    1.1K30

    python中导入模块的妙用

    ---- 本节知识视频教程 文字讲解开始: 一、模块的导入(第一种导入格式) 导入的关键词英文是import,这里注意大小写。我们可以将import直译理解成导入。我们需要导入的是模块。...二、可以导入模块的部分函数(第二种导入格式) 格式:from 模块名称 import 函数名称 这是第二种模块导入方式。 这种方式调用函数,不需要再书写模块名称。...模块 2、from 模块 import 函数 3、from 模块 import * 以上三种模块的导入都可以写到python文件的任意位置,但必须要注意要写到调用模块的前面的位置,否则将会报错。...相关文章: python中类的构造方法 Python中类的接口 python中利用API文档开发与学习 python中类和对象 python中函数递归VS循环 python中函数的可变参数 python...python输入与输出涨姿势 python中整型与浮点型的数值转换

    1.3K20

    Python 导入模块中的类

    参考链接: 用Python导入模块 介绍  在看代码时发现Python的导入类也可以用“.”的方式,很是惊奇,记录下来: 如以下代码:其所在文件(模块)为test.py  class Dog():    ...def __init__(self,name1):   #这里想说一点,Python class中的__init__就相当于Java中的构造函数一样,形参在这定义。        ...if __name__ == '__main__':     dog1 = Dog("ha").bark() 单独运行时结果如下:  在新的.py文件里想要导入这个模块中的Dog类,有两种方式: 第一种为...:  from test import Dog   #使用from  “模块名”import  “类名”的方式 dog2 = Dog("jinmao") dog2.bark() 结果为:   第二种为:...  import test  #import  "模块名" dog2 = test.Dog("jinmao")  #使用   模块名.类名   的方式使用此类 dog2.bark() 结果和第一种一样。

    2.3K20

    pycharm导入pandas模块_pycharm如何导入python的库

    大家好,又见面了,我是你们的朋友全栈君。 网上有些反应安装pandas库时会出现问题,提示好像是pip的原因。 这时候大概是自己的pip版本太久啦。所以最好先在cmd更新一下pip好了。...在cmd输入命令: python -m pip install -U pip 出现成功信息:Requirement already up-to-date 即可。...之后打开pycharm 1、点击右上角 file/settings 2、在弹出界面选择project/project interpreter 3、点击右上方“+”进入搜索第三方库的界面...4、在搜索框中搜索对应想安装的库或者模块,点击左下方“Install package”就行了。...如果安装完成,该库显示字体颜色会变成蓝色,并且在上一个界面罗列出你已安装的库 5、大功告成啦,再import的时候就不会被标红线了~ 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

    3.1K30
    领券