模块
模块的分类
- 标准模块(库),无需安装直接导入
- 第三方模块(库),需要pip安装后导入
- 自定义模块(库),自己编写的.py文件
导入方式
1. 直接导入 import math
2. 从模块中导入函数/变量 from string import ascii_uppercase
3. 模糊导入 from string import *
python执行
- 语法词法分析
- 编译生成字节码 .pyc
- 执行pyc
当模块导入运行时,会在同级目录下生成__pycache————目录,
将生成的字节码保存在这个目录下,下一次使用时直接运行字节码文件
直接运行的程序 不保存字节码
Python3 生成一个__pycache__文件夹,保留字节码
python2 只会在模块同级目录下生成.pyc文件
模块打包与发布
1、创建一个目录modpack,在此目录下创建空文件__init__.py
2、在modpack下创建模块
[root@zabbix-agent-nginx modpack]
[root@zabbix-agent-nginx modpack]
__init__.py
[root@zabbix-agent-nginx modpack]
[root@zabbix-agent-nginx modpack]
def func():
print("i am modpack function")
3、回到modpack同级目录,创建setup.py文件
[root@zabbix-agent-nginx python-hyrz]
[root@zabbix-agent-nginx python-hyrz]
from setuptools import setup, find_packages
setup(
name = "modtest",
url = "http://www.abc.com",
version = "0.0.1",
packages = find_packages(),
author = "sc",
author_email = "123456@qq.com",
install_requires = ['xlrd>=1.1.0'],
description = "this is test pack"
)
4、运行python3 setup.py check进行语法检查
[root@zabbix-agent-nginx python-hyrz]
Traceback (most recent call last):
File "setup.py", line 11, in <module>
packages = find_packges(),
NameError: name 'find_packges' is not defined
[root@zabbix-agent-nginx python-hyrz]
[root@zabbix-agent-nginx python-hyrz]
running check
5、运行python3 setup.py sdist 生成tar.gz压缩包, 会在同目录下生成一个dist目录
打包好的安装包文件就放在dist目录下
6、安装
进入dist目录
pip3 install modtest-0.0.1.tar.gz
7、测试
[root@zabbix-agent-nginx ~]
Python 3.6.8 (default, Nov 16 2020, 16:55:22)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from modpack import mod
>>> mod.func()
i am modpack function