一、包和模块的定义
模块:就是一个文件, 一个.py文件就是一个模块
包:就是一个文件夹目录,但是必须包含一个____init__.py文件
包和模块的分类
标准的包和模块 -> 系统安装好
第三方包和模型 -> 别人开发的
自定义包和模型 -> 自己开发的
二、包和模块的导入
-
导入的方式
1. import M (模块名称) 2. import M1,M2,M3 多个模块 3. import M1 as xxx 别名模块 4. from A.a.aa import B (as C) 模块 5. from 模块 import * (导入的是模块内__all__ = [里面的内容字符串]) 6. from 包 import * (导入的是包内__all__ = [模块名称字符串]) 如果没有__all__,那么就是所有非_下划线变量 7. from . import 模块
2、 导入的底层原理
第一次导入 :
1.执行被导入模块所有的代码;
2.创建一个模块对象,并将模块内所有顶级变量以属性的方式加载模块对象上面
3.在import 的位置,引入import 后面的变量名称到当前的命名空间 (多次导入只是执行这个步骤)
多次导入:
重复执行步骤3
3、导入的检索路径
第一次导入:
1. 先从内置模块中找 - 没有找到找第2
2.在从sys.path中找 sys.path 是一个数组
多次导入:
重已经加载中的模块去找 查看已经加载模块 sys.modules
4、导入的检索路径sys.path 包括哪些路径
1. 当前目录 运行那个文件就是以那个文件为目录, 特别注意子模块参考的路径也是这个
2. 环境变量PYTHONPATH指定的路径列表
3. .pth文件中的文件路径列表
4. python安装路径中的lib库中搜索
5、 追加路径到sys.path方式
1. 直接增加到sys.path 列表的后面
2. 修改PYTHON对应的环境变量文件路径
3. 增加一个.pth文件, 在文件增加文件路径 (在安装路径或者site-packages路径下面增加)
import sys
print(sys.path)
print(sys.modules)
6、 导入可选 :当导入A 失败的时候 导入B 导入可选 优先导入A
# 当导入A 失败的时候 导入B 导入可选 优先导入A
try:
import A as a
except ModuleNotFoundError:
import B as a
三、包和模块的安装
1、本地安装 (包已经下载在本地)
方式一:对带有setup.py的文件安装
步骤一:打开命令工具
步骤二: cd 到下载包的setup.py 目录
步骤三: 根据不同的环境之下 python3 setup.py install
方式二: 对带有.egg文件的包安装
使用setuptools自带脚本easy_install 命令: easy_install xxx包文件名称
方式三: .whl文件的包的安装
- easy_install 安装
- pip 安装
2、远程安装 (包未下载)
python -m pip install xxxx
python3 -m pip install xxxx
或者
pip install xxxxx
pip3 install xxxxx
最后赠言
学无止境,学习Python的伙伴可以多多交流。