模块与包

一、模块

1、模块的定义

模块就是一组功能的集合体,模块组织形式有以下几种

  • 一个python文件是一个模块,文件名是module.py,模块名则是module(自定义模块的常见格式)

  • 已被编译为共享库或DLL的C或C++扩展

  • 使用C编写并链接到python解释器的内置模块

  • 把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)

2、模块导入模式
  • import 模块名
  • from 模块名 import 函数名
    注意:使用from…import…语句可简化方法的调用方式,但若导入文件中存在与导入内容重名的方法,变量或类时,程序i执行将会出错。因此,相对而言,使用import语句导入模块更为安全。
3、模块的创建

Python文件中的每个文件都可以做为一个模块存在,文件名即模块名。
如下:
在这里插入图片描述
在这里插入图片描述

4、模块的搜索路径
  • sys模块的sys.path属性返回一个路径列表
  • 使用import语句导入模块时,系统自动从该列表的路径中搜索模块,如果没有找到,则程序报错
    如下:
import sys
sys.path        #模块搜索路径
sys.path.append('c:\\py\works')   #临时增加模块搜索路径示例

目录搜索路径为:
(1)当前目录。启动交互式Python的目录,或Python主程序位于的目录。
(2)操作系统环境变量PYTHONPATH中指定的目录。
(3)Python标准库目录

5、模块的属性

__ all __变量可以控制模块里哪些功能可以使用*号导入
如下:
在这里插入图片描述
运行结果:
在这里插入图片描述
在这里插入图片描述
运行结果:
在这里插入图片描述

在这里插入图片描述
运行结果:
在这里插入图片描述

__ name __变量可以获取模块的名称

  • 特别地,当一个模块被用户单独运行时,其__name__的值_main__’。故可以把模块源代码文件的测试代码写在相应试判断中,以保证只有单独运行时,才会运行测试。

二、包

  • 包是Python引入的分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境
  • 引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突
  • 每一个Python的包目录下面都会有名为__init__.py的特殊文件,该文件可以为空文件,但是必须存在,它表明这个目录不是普通的目录结构,而是一个包,里面包含模块
1、包的结构
 package
|—  __ init__.py
|—  module_ a1.py
|— 	module a2.pyL
└   package_ b
|— __ init__.py
└  module_b.py

包的存在使整个项目更富有层次,也可在一定程度上避免合作开发中模块重名的问题。包中的_ init_ .py 文件可以为空,但必须存在,否则包将退化为一个普通目录。

2、模块的打包发布

(1)将待发布的包放在与setup.py文件同级的目录中,目录结构如下所示:

|— 	setup.py 
|—	suba
|	|—  aa.py
|	|—	bb.py 
|	└	__ init __ .py
└	subb
|—	cc.py
|—	dd.py 
└	__init__py

(2)编辑setup.py脚本文件
setup.py文件中包含的内容如下:

from distutils.core import setup

setup(
	name="itheima"  #包名
	version="1.0", #版本号
	description= "itheima belongs to itcast", #包的描述信息
	author=" itcast" , #包的作者
	py_ modules=[ 'suba.aa,' suba.bb ', ’ subb.cc ', ' subb.dd'])  #包中含有的模块

其中的setup为一个函数,包含5个参数,依次为:包名、版本号、描述信息、作者以及包中含有的模块,实际上setup函数中不只有这些参数,但这些参数也不是必需的,用户可有选择地进行设置。
(3)在当前路径下打开命令行窗口,使用bulid命令构建模块
示例如下:
python setup.py build
经此操作后,当前目录中会创建一个名为build的文件夹,其中包含一个名为lib的目录,该目录中存储了待发布模块的备份
(4)用户可以通过sdist命令建立文件
示例如下:
python setup.py sdist
在这里插入图片描述
在这里插入图片描述

3、自定义包的安装

除标准模块和用户自定义模块外,用户还可从外部获取并安装第三方模块。需要注意的是,由于第三方模块的开发环境可能各不相同,因此其安装方式也不相同,有些模块可通过双击直接安装(pygame的Windows版本) ,但也有些模块并不提供这种安装方式。

实际上,对其它开发人员来说,13.11小节打包发布的模块就是一个第三方模块,下面以此模块为例,讲解第三方模块的安装方法。

(1)获取第三方模块的压缩包,对压缩包进行解压。解压后的目录结构如下所示:

|—	setup.py 
|一	suba
|—	aa. py
|—	bb. py
└	__init__.py
|—	subb
	|—	cc.py
	|—	dd.py 
	└ 	__init__.py
|—	PKG- INFO
└	setup. py

(2)在当前目录中打开命令行窗口,使用install命令安装模块,示例如下:
```python setup. py install``
经此操作后,模块会被安装到Python的第三方包目录下,用户也可通过"–prefix’ 选项设置模块安装路径,示例如下:

python setup. py install -perfix=E: \Python
使用此条命令,该模块将被安装到E盘的Python目录中。

小结:
pip list #查看已安装的第三方库
pip show <库名称>#查看某个库的详细信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值