制作并使用python发布的模块压缩包和whl包,并进行pip安装和使用
把自己的程序打包给别人去用,此处的包和打包的概念不一样,而是python中的package,是指发布的模块压缩包或whl包
几个概念
- 模块
- 包
- 第三方模块
- pip
__init__
模块
模块是Python程序架构的一个核心概念,每一个以扩展名.py结尾的Python源代码文件都是一个模块,在模块中定义的全局变量、函数、类都是提供给外界直接使用的工具,用import进行模块的导入。
包(Package)
包是一个包含多个模块的特殊目录(文件夹),目录下有一个特殊的文件__init__.py,目的是为了import + 包名可以一次性导入包中所有的模块。
第三方模块
第三方模块通常是指由第三方开发团队开发的并且被程序员广泛使用的Python包/模块。
pip
pip是一个通用的Python包管理工具,提供了对Python包的查找、下载、安装、卸载等功能。
__init__.py
是一个对外的接口,若需要把我们的模块在外界使用,则需要编辑配置init文件,来指定对外的列表,例如:
我建立了一个结构如下的文件夹
其中__init__.py为接口文件,test1和test2是两个模块,main文件用来测试,先在__init__文件中进行编辑
1 | from . import test1 |
然后在main文件里测试,输入
1 | import major1 |
可以看到,代码提示中出现test1和test2
此时我们如果把__init__.py中的test1一行注释掉,则会观察到,代码提示中只剩下了test2
以上我们可以看出__init__.py文件的作用。
构建自己的第三方库(whl格式)
- 安装setuptools
- 创建并编辑setup.py文件
- 打包
- 安装
- 卸载
首先,我的文件结构如下
其中__init__.py中引入hellotest.py和helloworld.py两个模块
1 | from . import hellotest |
安装setuptools
1 | pip install setuptools |
创建setup.py文件
setup.py文件为打包的配置文件,内容如下,注意这里的打包的py文件和包文件夹的目录结构要和真实文件的结构相对应。
1 | # 打包成模块压缩包 |
打包
cd到setup.py文件所在目录,执行命令
1 | python setup.py bdist_wheel |
运行后可以看到文件结构发生了改变
我们关注dist文件夹中的whl文件,这就是我们打包好的本地第三方库。
安装
我们新建一个文件夹,并把whl文件放到里面
cd到testy文件夹,命令行运行
1 | pip install hello-0.1-py3-none-any.whl |
可以看到pip先在远程仓库寻找叫这个名字的包,没找到则在本地目录中找并安装。
下面我们测试一下,命令行输入
1 | python |
进入python环境
输入如下指令,可以看到我们的模块被运行了
卸载
使用指令
1 | pip list |
查看已安装的包,可以看到我们之前构建的hello包赫然在列
现在我们来卸载它
使用命令
1 | pip uninstall hello |
卸载成功
至此。