目录
0.模块是什么?包?
模块
定义:
就是Python文件,里面定义了很多的函数、类、变量
分类:
标准模块(标准库):无需安装,Python自带
第三方库:需要安装
自定义模块:自己写的Python文件
包
实际上就是一个目录
包的结构目录里可以有一个__init__.py模块
#Python2和Python3的一个区别
Python2中__init__.py是必须要有的,Python3中不必要
1.模块的导入
①导入方式:
直接导入模块
从模块里导入函数/从包里导入模块
导入所有函数(不推荐)
②同一模块重复导入只会执行一次
第一次导入的时候,就会将这个模块加载到内存空间,下次导入的时候会先查看内存空间里是否有
③如果导入的模块名相同,会使用后导入的
可以使用别名,来导入相同模块的包
④. 使用名字导入
# import importlib
# st = importlib.import_module(String)
# print(st.digits)
· ⑤.模块的运行
# 1.直接运行
# 2.模块导入运行
⑥.相对导入与绝对导入
#from ..subpack02 import subpack02
# 相对路径
#from pack01.subpack02 import subpack02
# 绝对路径
# 推荐使用相对导入,直接运行的文件在哪里,那一层的目录就叫top-level,之下的模块不可访问top-level同级的文件。
⑦.模块的查找顺序
#当import 一个模块时,首先会在sys.modules中查找是否加载了此模块,如果加载了则只是将模块的名字加入到正在调用import模块的Local名字空间,如果没有加载则从sys.path目录中按照模块名称查找模块文件。如果都没有找到模块名就报错
sys.modules是一个字典,sys.path是一个列表
#第一个引号是当前目录下,最后一个引号内容是第三方库下载路径,pip install下载的模块会放在这个路径下
#Python查找包的顺序在sys.path中逐次查询,即从当前目录开始,至第三方库下载目录为止
#如果当前目录下有和系统库重名的模块,会优先导入当前目录下的模块
2.下引号
标识符是用来标识某种对象的名称。以下划线开头的标识符是有特殊意义的。
以单下划线开头的变量(_foo)
表示保护对象,不能用from xxx import *导入包和模块
以双下划线开头的(__foo)
表示私有对象,不能用from xxx import *导入包和模块
以双下划线开头和结尾的(__foo__)
代表Python中特殊方法专用的标识,不建议用户使用
#__int__ __name__ __file__ --》python内置的变量
#__init__ 初始化
#__name__ 作为主程序显示为__main__ 作为导入模块时显示为相对于top level的文件路径
#__file__ 文件绝对路径
# -*- coding: utf-8 -*-
# @Time : 2022/3/1 15:38
# @Author : Seesunman
# @File : __init__.py
print("This is init")
__all__ = ["model","_model"]
#指定*要导入的内容
3.文件与模块的执行过程
先进行词法语法检查
在内存中生成PyCodeObject
执行PyCodeObject
#当模块导入运行的时候,会在同级目录下生成__pycache__目录,将生成的字节码保存在此目录下
#下一次使用的时候会直接运行字节码文件
#python3 生成__pycache__目录
#Python2 只会在模块同居目录生成.pyc文件
#当模块直接运行时,不会保存字节码
4.模块的打包与发布
1.创建模块包 需要一个__init__.py文件
2.在模块包同级目录下生成配置文件setup.py
from setuptools import setup, find_packages
setup(
#包名
name = "modtest",
#官网
url = "http://www.baidu.com",
#版本
version = "0.0.1",
#指定要打包的模块和包
packages = find_packages(),
#作者
author = "man",
#邮箱
author_email = "1916259704@qq.com",
#依赖
install_requires = ['xlrd>=1.1.0'],
#描述信息
description = "this is test pack"
)
3.运行python3 setup.py check
进行语法检查
4.运行python3 setup.py sdist
生成tar.gz压缩包,会在同目录下生成一个dist目录
#打包好的安装包文件放在dist目录下
5.安装
进入sdist目录
pip3 install modtest-0.0.1.tar.gz