Python中的模块与包
一、导入模块
1.1、导入标准模块
# string 是一个标准模块
import string
print(string.ascii_uppercase)
print(string.ascii_lowercase)
from string import ascii_uppercase
print(ascii_uppercase)
1.2、模糊导入
进行模糊导入的时候,默认是识别不了下划线开头的变量的
from string import *
print(ascii_lowercase)
1.3、导入自定义模块
模块运行有两种方式 – 1、直接解释器运行 2、导入运行
导入两次,只执行一次,第一次导入的时候,就会将这个模块加载到内存空间,下次导入的时候会先查看内存空间有没有
如果导入的模块名相同,使用后导入的
from pack01.one import packtest
from pack02.one import packtest
packtest()
为了区分导入相同的模块名,所以使用别名
from pack02.one import packtest as pk02
pk02()
1.4、接收字符串—动态导入
import importlib
st = importlib.import_module('string')
print(st.ascii_lowercase
案例
import importlib
while True:
try:
str1 = input("请输入你想要输入的模块(按q退出):")
if str1.upper() == 'Q':
break
st = importlib.import_module(f'{str1}')
print(f'导入{str1}成功')
except:
print('没有这个模块')
二、相对导入和绝对导入
2.1、相对导入
以 . 开头的导入路径称为相对导入
一个表示当前,两个表示上级,三个表示上上级
top—level 程序入口,直接运行的文件,那一层目录就是top—level
相对导入不能访问到top-level那一层,只能访问top-level以下的层
2.2、绝对导入
就是从top-level那一层,一层一层往下数
三、模块的查找
import sys
sys.path.append("C:\\Users\\23314\\PycharmProjects\\day02\\3-20模块与包")
import main
四、python的执行
4. 1,语法词法分析
4.2,编译生成字节码 --》.pyc
4.3,执行字节码
当模块导入运行的时候,会在统计目录下生成__pycache__目录,将生成的字节码保存在此目录下
下一次使用的时候直接运行字节码文件;直接运行模块时,不会保存字节码文件
五、打包与安装
5.1、准备一个空文件夹pack
5.2、在pack下面创建一个包 modpack 需要一个__init__.py
5.3、在modpack同级目录下,创建 setup.py
[root @ xiaoliu pack] # cat setup.py
from setuptools import setup, find_packages
setup(
# 包名
name="modtest",
# 官网
url="http://lhj.com",
# 版本
version="0.0.1",
# 指定要打包的模块和包
packages=find_packages(),
# 作者
author="liuhonjie",
# 邮箱
author_email="2331422322@qq.com",
# 依赖
install_requires=['xlrd>=1.1.0'],
# 描述信息
description="this is test pack"
)
5.4、运行python3 setup.py check 进行语法检查
5.5、运行python3 setup.py sdist 生成tar.gz压缩包,
会在同目录下生成一个dist目录,打包好的安装包文件就在dist目录下
[root@xiaoliu pack]# ls
dist modpack modtest.egg-info setup.py
[root@xiaoliu pack]# ls dist/
modtest-0.0.1.tar.gz
5.6、安装
进入dist目录,直接运行 pip3 install modtest-0.0.1.tar.gz
5.7、测试
[root@xiaoliu ~]# python3
Python 3.6.8 (default, Mar 19 2021, 05:13:41)
[GCC 8.4.1 20200928 (Red Hat 8.4.1-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from modpack import mod
i am mod.py
>>> mod.func()
this is mod.py function
>>>