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

Python的绝对导入和相对导入

Python 相对导入与绝对导入,这两个概念是相对于包内导入而言的。包内导入即是包内的模块导入包内部的模块。...但是存在相对导入语句的模块,不能直接运行,否则会有异常:ValueError: Attempted relative import in non-package如果是绝对导入,一个模块只能导入自身的子模块或和它的顶层模块同级别的模块及其子模块...前面提到含有相对导入的模块不能被直接运行,实际上含有绝对导入的模块也不能被直接运行,会出现 ImportError:ImportError: No module named XXX这与绝对导入时是一样的原因...要运行包中包含绝对导入和相对导入的模块,可以用 python -m A.B.C 告诉解释器模块的层次结构。...这是因为这两个文件所在的目录不是一个包,那么每一个 python 文件都是一个独立的、可以直接被其他模块导入的模块,就像你导入标准库一样,它们不存在相对导入和绝对导入的问题。

4.5K32

Python相对、绝对导入浅析

这里不同的视角是指从Python import hooks这个方面来展开,当然本身关于Python import hooks有很多的文章,我这里不打算展开聊这个方面的内容,文章中主要会结合代码和PEP...__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

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

    写程序的时候尽量提高代码的可读性和代码的复用性 a = 1000 id(a)是查看a的内存地址 python setup.py install 安装的压缩包不能通过pip uninstall...***            相对引入和绝对引入 有了包之后才有了相对引入f这种引入方式的存在意义 绝对引入: 用到绝对引入的时候需要mark一下设为源文件夹,以下两种都是绝对引入的方式: import...引入最低级也要是模块级别的文件 相对引入:  相对引入的命令必须要在终端中才能运行,输入的命令是:python -m 父目录名.main.py,并且引入的东西都需要 先在__init__文件中事先定义才能正常运行.../方法名/类型名称 from .plane.utils import func func() #这是相对于父目录进行的相对引入,执行的时候不能直接在本模块中执行, 因为在本模块中执行的话python...是唯一一个,不能再相对引入, 所以为了不报错,采用这种引用方式的正确的执行命令是在终端中输入:python -m 父目录名.main.py,找到参照物才能正确执行 有了from的引入方式之后可以引入比模块名更加细致的东西

    61930

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

    操作相关的工具包 ; 3、模块特点 Python 模块可以被其他 Python 程序 引用 和 重用 , 这使得代码可以组织成更易于管理的大小 , 并使代码的可重用性得到提高 ; Python 模块...支持多层嵌套 , 一个 Python 模块可以包含在其他 Python 模块中 , 也可以被其他 Python 模块包含 , 该 模块嵌套结构 可以使代码的组织更加灵活和可维护 ; 4、常见的 Python...模块 Python 自带的 标准库 模块 , 包含了Python中常用的函数和类等代码片段 ; 除了标准库之外,还有大量的第三方模块库 模块 ; 常见的 Python 模块 : time 模块 : 提供了与时间有关的函数...; 二、Python 模块导入 1、Python 模块导入语法 Python 模块导入语法 : [from 模块名称] import [模块 | 类 | 变量 | 函数 | *] [as 别名] 上述语法中...: import 模块名称 : 导入模块中的所有内容,包括函数、变量和类等 , 可以直接使用模块中的名称来访问它们 ; from 模块名称 import 类/变量/方法名称 : 导入指定模块中的指定名称对应的

    25920

    python—模块导入和类

    1.查询模块:按目录依次查找需要导入的模块,模块目录一般在:/usr/lib64/python2.7 In [2]: sys.path Out[2]: ['', '/usr/bin', '/usr/lib64...("\n")     print lines,words,char file1 = open("/etc/passwd","r") s = file1.read() count(s) 3.脚本形式,导入模块.../usr/bin/env python import wc 说明:目录下生产编译文件:wc.pyc 4.py和wc.py的__name__内置变量不一样,前者是wc,或者是__main__,修改wc.py.../usr/bin/env python import wc s = open("/root/python/10.py","r").read() wc.count(s) 5.包的形式,导入模块 四种导入方法...、java、C++;面向过程编程:C、函数式编程、shell 类的(静态)属性:(人类的五官,理解为变量) 类的(动态)方法:(人类吃穿住行,理解为一个函数) 对象:类的实例化,之后才能有属性和方法

    1.7K40

    【Python模块】- 如何导入和使用模块?模块导入方式有哪些?

    一、模块的介绍1.1》模块的概念模块是python程序架构的一个核心概念。...的方式使用模块提供的工具 ——全局变量、函数、类3.导入模块后使用工具代码示例首先先准备两个模块,md_01_测试模块1和 md_02_测试模块2,然后在demo文件中导入模块并使用工具。...测试模块文件代码内容如下截图:在demo文件中使用模块中的函数和类——代码如下:# 导入两个模块import md_01_测试模块1import md_02_测试模块2# 使用模块中类创建对象a = md...就可以直接使用模块提供的工具——全局变量、函数、类代码示例:# 导入模块中的部分工具from md_01_测试模块1 import Afrom md_01_测试模块1 import name# 直接调用函数...,单单从代码上不好排查,如图更多关于Python基础教程和进阶知识都可以去Python自学网学习,还有Python学习路线讲解。

    3.3K20

    Python绝对路径和相对路径详解

    在介绍绝对路径和相对路径之前,先要了解一下什么是当前工作目录。 什么是当前工作目录 每个运行在计算机上的程序,都有一个“当前工作目录”(或 cwd)。...在Python中,利用 os.getcwd() 函数可以取得当前工作路径的字符串,还可以利用 os.chdir() 改变它。...: 'C:\\error' 了解了当前工作目录的具体含义之后,接下来介绍绝对路径和相对路径各自的含义和用法。...什么是绝对路径与相对路径 明确一个文件所在的路径,有 2 种表示方式,分别是: 绝对路径:总是从根文件夹开始,Window 系统中以盘符(C:、D:)作为根文件夹,而 OS X 或者 Linux 系统中以...相对路径:指的是文件相对于当前工作目录所在的位置。

    3.4K10

    Python模块的导入

    前言在 Python 中,模块是组织代码的重要结构。通过模块,程序员可以更高效地管理大型项目,降低代码的复杂度,提高代码的可读性和可维护性。本文详细讲解了模块的定义及其导入方式。...本篇文章参考:黑马程序员一、什么是模块?Python 模块(Module)是一个 Python 文件,以 .py 结尾。模块可以包含函数、类和变量以及可执行的代码。...通过导入模块,我们能够使用模块中定义的各种功能,简化开发流程,并提升代码的可读性和可维护性。...time # 导入Python内置的time模块(即time.py这个代码文件)print("你好!")...符号用于访问对象的属性或方法。当我们导入一个模块后,模块名便成为一个对象,我们可通过. 来访问该对象的属性和方法,明确地指明使用的功能。

    10411

    Python基础语法(五)—常用模块和模块的安装和导入

    Python基础语法(五)—常用模块的使用和模块的安装和导入,本文介绍的Python模块有:os、sys、time、datetime、random、pickle、json、hashlib、shutil、...当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。 使用模块还可以避免函数名和变量名冲突。...模块查找路径 发现,自己写的模块只能在当前路径下的程序里才能导入,换一个目录再导入自己的模块就报错说找不到了, 这是为什么?...,Python解释器会按照上面列表顺序去依次到每个目录下去匹配你要导入的模块名,只要在一个目录下匹配到了该模块名,就立刻导入,不再继续往后找。...用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 pickle模块提供了四个功能:dumps

    1.3K40

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

    的方式进行调用 ; 代码示例 : """ 异常传递 代码示例 """ # 导入时间模块 from time import sleep print("开始执行") # 调用模块方法 直接使用 功能名称即可...# 使用时间模块的 sleep 休眠功能 sleep(3) print("结束执行") 执行结果 : D:\001_Develop\022_Python\Python39\python.exe D:...---- 1、设置别名语法 Python 中还可以为导入的 模块 / 模块部分功能 设置别名 , 设置别名的语法如下 : import module_name as renamed_name from...通过 renamed_name 调用相应的 模块 / 模块功能 ; 2、代码示例 - import 导入模块设置别名 代码示例 : """ 异常传递 代码示例 """ # 导入时间模块 import...代码示例 : """ 异常传递 代码示例 """ # 导入时间模块 from time import sleep as s print("开始执行") # 使用时间模块的 sleep 休眠功能 s

    29710

    Python中time模块和datetime模块的用法示例

    time模块方法: time.time():获取当前时间的时间戳,time.localtime():接受一个时间戳,并把它转化为一个当前时间的元组。...time.clock():返回处理器时钟时间,一般用于性能测试和基准测试等,因为他们反映了程序使用的实际时间,平常用不到这个。...1)0.020000.03000----------------------------------------------------------------------------datetime模块...datetime.datetime.combine(date,time):这个用来结合日期和时间的#coding:utf-8import datetime#打印:从毫秒到周的表示格式 = 转换成秒 (...如果比较d > a 的话就返回False上面的列子都是把日期和时间分开的,现在我们来把他们自由结合假设我们想要的时间是:2014-01-05 13:14:252014-01-05 13:14:25---

    1.9K50

    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高级进阶#009 pyqt5中窗体的绝对布局和相对布局

    一、知识回顾 1.点到了窗体的绝对布局。 2.窗体的居中方式:根据已知像素,计算窗体的起点位置。 Desktop()函数,这个函数是在Qapplication类中的。...想要获取水平方向,调用width函数 想要获取垂直方向,调用height函数 3.标签控件的使用qlabel 本节知识视频教程 视频内容 以下开始文字讲解: 一、相对布局与绝对布局 相对布局 布局中的控件可以随着窗体的变化而变化...布局中的控件之间的距离可以按照比例来调节。 绝对布局与相对布局的不同 1.绝对布局是直接将控件载入到窗体的位置就可以了。一般直接采用move函数移动到指定的位置后不变。...使用QVBoxlayout可以进行垂直布局,对于垂直布局的思想理解的情况下,再适当增加弹簧,可以使得布局更为灵活。 四、总结强调 1.掌握相对布局与绝对布局的区别。...2.掌握相对布局中的水平盒布局与垂直盒布局。 3.掌握盒布局中的控件比例排布的关系。

    2.4K50

    2018年10月5日python相对引入和绝对引入详解

    ————-————————                                                      相对引入和绝对引入 绝对导入的格式为 import A.B 或 from...A import B 相对导入格式为 from . import B 或 from ..A import B,.代表当前模块,..代表上层模块,...代表上上层模块,依次类推) 相对引入的方式代码不能直接运行...: main.py: 最直接的绝对引入整个包(但是同样引入整个包和相对引入整个包一样需要在该包的__init__.py中定义要使用包中的哪些数据,后边才能正常使用引入的包,否则会报错找不到包下的那个模块...—————————————————————————— 无论是相对引入和绝对引入,使用from a import b的最后的位置都是只有一个模块名或者具体数据名,如果有多个前缀都要放到前边的from中。...模块和包     模块:python中每个python文件都是一个独立的模块         较少的、独立的、功能近似的 多个变量、函数、类型的集合!

    87420
    领券