模块和包
1. 模块定义
Python程序由模块构成,一个模块对应一个.py文件
模块由语句组成
2. 模块化编程的流程
- 设计API,进行功能描述
- 编码实现API中的功能
- 在模块中编写测试代码,并消除全局代码
- 使用私有函数实现不被外部客户端调用的函数
3. 模块导入
3.1 import导入模块的方式
import 模块
import 模块1,模块2,模块3
import 模块 as 别名
3.2 import导入的模块类别
- 使用python编写的代码(.py文件)
- 已被编译为共享库或DLL的C或C++扩展
- 包好一组模块的包
- 使用C编写并链接到python解释器的内置模块
3.3 from 模块 import 函数/类
通过这种方法导入的函数/类可以直接使用
4. 模块的加载
一个模块不管被加载多少次,该模块在解释器中有且仅有一个实例对象
4.1 模块的动态加载
动态加载模块,使用importlib命令
import importlib
s = importlib.import_module("math")
print(s.pi)
5. 包package
5.1 包package的概念
包相当于文件夹,将多个功能相似的模块组织到一起,包必须有__init__.py文件,_init_.py文件是包区别与普通文件夹的关键。包可以嵌套。
5.2 包的导入
包的导入主要包括以下几种方法
- import package1.package2.module #导入package1下的package2中的模块
- from package.package2 import module #导入package1下的package2中的模块
- from package.package2.module import func #导入package1下的package2中的模块module的函数func
5.3 init.py
_init_.py有以下三种作用:
- 作为包的标识,不能删除
- 用来实现模糊导入
- 导入实际是导入__init__.py文件,可以在__init__.py文件中实现包的初始化
6. sys.path和模块搜索路径
在引入模块文件时,系统的搜索优先级如下:
- 内置模块
- 当前目录
- 程序的主目录
- 环境变量pythonpath
- 标准链接库目录
- 第三方库目录(site-packages目录)
- .pth文件的内容
- sys.path.append导入的目录
7. 模块的发布和使用
7.1 本地模块的发布和安装
7.1.1 模块发布
将模块发布到本地后,其它开发者可以以“第三方开发库”的方式引用该模块
第一步,新建目录
第二步,在该文件夹下新建包
第三步,往包中添加文件
第四步,在文件夹下新建setup.py文件
from distutils.core import setup
setup(
name='myMathPro', # 对外发布模块的名字
version='1.0', # 版本号
description='这是第一个对外发布的模块,里面只有数学方法,用于测试哦', #描述
author='admin', # 作者
author_email='admin@163.com',
py_modules=['mathPro.addPro','mathPro.multiPro'] # 要发布的模块
)
第五步,发布模块
首先打开终端
执行以下命令,即可完成模块的打包
python setup.py sdist
7.1.2 安装模块
执行以下命令安装模块
python setup.py install
查找python解释器目录,在python解释器目录下的Lib/site-packages目录中可以看到安装的第三方模块
7.1.3 使用模块
import mathPro.addPro
7.2 PyPI官网_远程上传和管理模块
7.2.1 远程上传
第一步,在pypi官网 https://pypi.org/ 注册账户
第二步,在家(c:/user/用户名)目录下创建用户信息文件.pypirc
[distutils]
index-servers=pypi
[pypi]
repository=http://upload.pypi.org/legacy/
username=用户名
password=密码
第三步,进入setup.py目录,使用命令
python setup.py sdist upload
7.2.2 管理远程包
7.2.3 安装远程包
第一种:界面安装
第二种:命令行安装
pip install 包名 ##安装
pip update 包名 ##更新