目录
前言
一.什么是setuptools?
二.编写setup.py文件
1.创建一个setup.py文件.
2.调用setuptools的setup 方法,参数如下
3.代码示例
三.执行打包
3.1.执行打包语句
3.1.1 打包成 wheel
3.1.2 打包成 xxx-version.tar.gz
3.2.验证
四.安装
4.1安装whl
4.2 安装gz
前言
平时造好的轮子,最后还是有给大家使用的一天。完整的记录一下,如何把Python模块打包成whl(wheel) 文件或者gz压缩文件。打包时会用到setuptools(60.5.0)工具。
setuptoolssetuptools是 Python Enterprise Application Kit(PEAK)的一个副项目,是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的。Python还可以帮助我们管理第三方依赖包。
二.编写setup.py文件
1.创建一个setup.py文件.
在项目根目录下,创建一个setup.py文件,方便将需要打包的模块找到.
setup.py文件无论打包还是安装都会用到,在setup.py文件忠描述清楚这个模块的信息以及依赖项。
- name : 打包起来的包的文件名
- version : 版本号,添加为打包文件的后缀名
- author : 作者
- author_email : 作者的邮箱
- py_modules : 打包的.py文件
- packages: 打包的python文件夹
- include_package_data : 项目里会有一些非py文件,比如html和js等,这时候就要靠include_package_data 和 package_data 来指定了。package_data:一般写成{‘your_package_name’: [“files”]}, include_package_data还没完,还需要修改MANIFEST.in文件.MANIFEST.in文件的语法为: include xxx/xxx/xxx/.ini/(所有以.ini结尾的文件,也可以直接指定文件名)
- license : 支持的开源协议
- description : 对项目简短的一个形容
- ext_modules : 是一个包含Extension实例的列表,Extension的定义也有一些参数。
- ext_package : 定义extension的相对路径
- requires : 定义依赖哪些模块
- provides : 定义可以为哪些模块提供依赖
- data_files :指定其他的一些文件(如配置文件),规定了哪些文件被安装到哪些目录中。如果目录名是相对路径,则是相对于sys.prefix或sys.exec_prefix的路径。如果没有提供模板,会被添加到MANIFEST文件中。
3.代码示例
from setuptools import setup,find_packages
set_up(
name = 'foo',#包名
version = '0.0.1',#版本号
packages = find_packages()#搜索Demo下的包
)
三.执行打包
3.1.执行打包语句
在set_up.py 文件夹下打开终端,执行set_up.py.
安装包有两种结果 whl文件或者tar.gz文件,可按照自身需求去选择。
3.1.1 打包成 wheel
python setup.py bdist_wheel
执行成功后, 在项目文件夹下,生成dist文件夹
dist文件夹中的whl文件就是打包好的轮子
3.1.2 打包成 xxx-version.tar.gz
python setup.py sdist
3.2.验证
查看打包的模块 wheel 直接将whl改成zip,可以看到被打包的内容
四.安装
4.1安装whl
pip install XXXXX.whl
4.2 安装gz
解压缩gz文档后,打开文件夹,执行setup.py,模块将会被安装到解释器对应的Lib/site-packages目录下。
python setup.py install