python学习的第十八天模块之包、相对搜索路径和绝对搜索路径

一、包

1、什么是包

包是一种通过使用‘.模块名’来组织python模块名称空间的方式。具体就是一个包含有__init__.py文件的文件夹,所以其实我们创建包的目的就是为了用文件夹将文件/模块组织起来PS:(1)在pyhton3中没有__init__不会报错,但在python2会报错(2)创建包的目的就是为了导入模块而不是运行,包的本质是个模块也是个文件夹

2、为什么用包

虽然功能越来越多被导入的模块越多,我们需要把这些模块统一组织起来方便我们管理,以提高程序的结构性和稳定性

ps:(1)无论portfrom..import导入都要求点的左边是个包

(2)form...import后面必须是一个明确的名字,不包含点

3、怎么用包

(1)包之import的使用

#在与glance同级的test.py中
import glance
glance.cmd.manage.main()

‘‘‘
执行结果:
AttributeError: module ‘glance‘ has no attribute ‘cmd‘

‘‘‘

(2)包之from...import的使用

1 from glance.db import models
2 models.register_models(‘mysql‘)

二、绝对路径和相对路径(最好用form...import)

ps:包以及包所包含的模块都是用来被导入的,而不是被直接执行的。而环境变量都是以执行文件为准的

 

绝对导入与相对导入

# 绝对导入: 以执行文件的sys.path为起始点开始导入,称之为绝对导入
#        优点: 执行文件与被导入的模块中都可以使用
#        缺点: 所有导入都是以sys.path为起始点,导入麻烦

# 相对导入: 参照当前所在文件的文件夹为起始开始查找,称之为相对导入
#        符号: .代表当前所在文件的文件加,..代表上一级文件夹,...代表上一级的上一级文件夹
#        优点: 导入更加简单
#        缺点: 只能在导入包中的模块时才能使用
      #注意:
        1. 相对导入只能用于包内部模块之间的相互导入,导入者与被导入者都必须存在于一个包内
        2. attempted relative import beyond top-level package # 试图在顶级包之外使用相对导入是错误的,言外之意,必须在顶级包内使用相对导入,每增加一个.代表跳到上一级文件夹,而上一级不应该超出顶级包

总的来说:(1)在执行文件导入包用import更简单,用from ...import 需要手动添加环境变量

(2)在模块间互相导入,用from...import的相对导入简单,import需要注意sys环境变量

(3)相对导入和绝对导入只能from...import

原文地址:https://www.cnblogs.com/ye-hui/p/9791999.html

时间: 2024-11-08 23:55:56

python学习的第十八天模块之包、相对搜索路径和绝对搜索路径的相关文章

Python学习之路12?模块与包

一 模块 1.1 什么是模块? 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 1.2 为何要使用模块? 如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方式去执行,此时test.py被称为脚本script. 随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理.这时我们不仅仅可以把

python学习第十三天 -模块和包

模块和包 大家都知道,在计算机程序开发的过程中,随着程序代码越写越多,这样代码就会越不容易维护. 有时候为了好维护代码,把不同功能的函数放到不同的xx.py文件中. 在python中,一个.py文件就称为一个模块. 使用模块有什么好处? 1.提供代码可维护性. 2.可以避免函数名和变量名冲突.如果两个相同的函数名在两个模块中,直接引用的时候,可以直接显示调用xx.function即可. 但是如果不同的人编写的模块名又是相同的怎么办?为了解决模块名相同,Python又引用包的概念. 在python

Python学习(十) —— 模块和包

一.模块 一个模块就是一个包含了python定义和声名的文件,文件名就是模块名加上.py后缀. import加载的模块分为四个通用类别: 1.使用python编写的代码(.py文件) 2.已被编译为共享库或DLL的C或C++扩展 3.包好一组模块的包 4.使用C编写并链接到python解释器的内置模块

Python学习-基础篇4 模块与包与常用模块

一 模块介绍 1.什么是模块?#常见的场景:一个模块就是一个包含了一组功能的python文件,比如spam.py,模块名为spam,可以通过import spam使用. #在python中,模块的使用方式都是一样的,但其实细说的话,模块可以分为四个通用类别: 1 使用python编写的.py文件 2 已被编译为共享库或DLL的C或C++扩展 3 把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包) 4 使用C编写并链接到python解释器的内置模块2.

Python学习笔记五(模块与包)

一.模块 1.模块介绍 一个模块就是包含了一组功能的python文件,可以通过import导入模块使用. python中模块分为四个类别: a) 使用python编写的.py文件 b) 已被编译为共享库或DLL的C或C++扩展 c) 把一系列模块组织到一起的文件夹,文件夹内有__init__.py文件,称该文件夹为包 d) 使用C编写并链接到python解释器的内置模块 定义my_module.py模块,模块名为my_module print("from my_module.py")

python学习笔记五:模块和包

一.模块用import导入 cal.py: #!/usr/bin/python def add(x,y): return x+y if __name__ == '__main__': print add(1,2) 注:__name__为内置变量,如果直接在CLI中调用值为__mail__,否则为文件名. 在new.py中导入: import cal print cal.add(2,3); 二.包:按目录名组织的模块 1.建立一个名字为包名字的文件夹 2.在该文件夹下创建一个__init__.py

python学习第四十八天json模块与pickle模块差异

在开发过程中,字符串和python数据类型进行转换,下面比较python学习第四十八天json模块与pickle模块差异. json 的优点和缺点 优点  跨语言,体积小 缺点 只能支持 int str list tuple dict pickle 的优点和缺点 优点 专门为python设计,支持python所有的数据类型 缺点 只能python使用,存储数据占空间大 文章来自 www.96net.com.cn 原文地址:https://www.cnblogs.com/96net/p/97806

Python学习笔记-安装MySQLdb模块

模块下载地址: MySQL-python 1.2.3 for Windows and Python 2.7, 32bit and 64bit versions http://www.codegood.com/archives/129 直接点击安装exe即可,如果缺少dll文件,可以百度下载相关dll文件. Python学习笔记-安装MySQLdb模块

python 学习_第四模块 并发编程(多线程)

python 学习_第四模块 并发编程(多线程) 1  开启线程方式 from threading import Thread import time def say(name): time.sleep(2) print("%s hello"%name) if __name__ =="__main__": t = Thread(target=say,args=("alex",)) t.start() print("主线程")