Python打包工具 setuptools 的使用
简述
setuptools 是一个 Python 源码打包工具,通过它,我们可以很方便的对我们的 Python 代码进行打包和分发,我们平时使用的很多第三方库,就是通过它进行打包和分发的,所以我们能够很方便的通过 pip 安装和使用,下面简单介绍下打包和分发。
安装
这里需要安装几个库,setuptools是必须的,还有 wheel,用于打包成 wheel格式的二进制包,twine用于发布到 pypi
1 |
|
项目结构
项目目录树如下
项目根目录下
- src: 源码存放目录
- readme.md: 用于编写项目的详细描述,一般用于发布到pypi时,项目主页的描述
- setup.py: setuptools 打包配置文件
src 源码目录下
- demo01: Python 包,往后编写的包和Python文件,都放在这个包下,方便以后打包
- tests: Python包,一般用于编写一些测试文件,打包源码时,忽略这个包下的所有文件
first.py
脚本测试
1 |
|
setup.py
配置文件
1 |
|
- 编写完配合文件后,可以直接安装源码到本地环境
1
python setup.py install
- 测试阶段不想直接安装到本地的话,可以使用
1
python setup.py develop
打包源码
上面开发完项目之后,编写
setup.py
打包配置文件,之后就可以使用 setuptools 打包了,这里打包为 wheel 格式的二进制文件,项目根目录下执行如下命令打包:1
python setup.py bdist_wheel
执行打包命令,会生成一些发布文件:
其中 dist 目录下的
demo01-1.0.0-py3-none-any.whl
就是打包好的项目源码,查看它直接安装到本地:
1
pip install dist/demo01-1.0.0-py3-none-any.whl
查看安装依赖
1
pip show demo1
脚本命令
1
2
3
4
5$ test1
Hello Test1
$ test2
Hello Test2
发布
项目开发好后,想分享给更多人使用时,打包后还需要上传到 PyPi (Python Package Index)上,它是 Python 官方维护的第三方包仓库,用于统一存储和管理开发者发布的 Python 包。
首先需要在 PyPi 上注册账号
然后在用户家目录下生成 ~/.pypirc 文件,并编写如下内容
1
2
3
4
5
6[distutils]
index-servers = pypi
[pypi]
username:xxx
password:xxx然后使用这条命令进行信息注册
1
python setup.py register
注册完了后,上传源码包
1
python setup.py upload
上面的发布是 setuptools 自带的,操作比较麻烦,想要简单点,可以使用 twine 发布工具,直接输入:
1
twine upload dist/demo01-1.0.0-py3-none-any.whl
上传到 pypi 后,就可以在 pypi 上看到项目的信息了,并且可以使用 pip 进行安装使用
1
pip install demo01
pbr
pbr 是一个对 setuptools 加强的插件,通过它可以将 setup 函数所需的参数放在一个统一的配置文件中集中管理,此外它也带有自动化管理项目版本的功能。pbr 来自于openstack 社区。
最小化的 setup.py
文件
1 |
|
setup.py
所需的实际元数据存储在 setup.cfg
1 |
|