Python打包分发工具setuptools

  • Post author:
  • Post category:python


本文主要介绍如何把个人编写的 Python 应用打包并上传到官方仓库 PyPI,使得可以直接通过 pip 进行安装使用,并在 PyPI 上进行维护。

分发工具 setuptools

曾经 Python 的分发工具是 distutils,但它无法定义包之间的依赖关系。setuptools 则是它的增强版,能帮助我们更好的创建和分发 Python 包,尤其是具有复杂依赖关系的包。其通过添加一个基本的依赖系统以及许多相关功能,弥补了该缺陷。他还提供了自动包查询程序,用来自动获取包之间的依赖关系,并完成这些包的安装,大大降低了安装各种包的难度,使之更加方便。

一般 Python 安装会自带 setuptools,如果没有可以使用 pip 安装:

$ pip install setuptools

setuptools 简单易用,只需写一个简短的 setup.py 安装文件,就可以将你的 Python 应用打包。


第一个安装文件

在目录 learn_setup 下新建安装文件 setup.py,然后创建包 myapp 模拟要打包源码包:

.
├── myapp
│ └── __init__.py
└── setup.py

一个最简单的 setup.py 文件内容如下:

from setuptools import setup

setup(
    name='firstApp', # 应用名
    version='0.0.1', # 版本号
    packages=['myapp'], # 包括在安装包内的 Python 包
)

使用安装文件创建 wheel

有了上面的 setup.py 文件,我们就可以打出各种安装包,主要分为两类:sdist 和 bdist。

Source distribution

使用 sdist 可以打包成 source distribution,支持的压缩格式有:

Format Description Notes
zip zip file (.zip) Windows 默认
gztar gzip’ed tar file (.tar.gz) Unix 默认
bztar bzip2’ed tar file (.tar.bz2)
xztar xz’ed tar file (.tar.xz)
ztar compressed tar file (.tar.Z)
tar tar file (.tar)

使用方式为:

$ python setup.py sdist --formats=gztar,zip

现在目录下多出 dist 和 *.egg-info 目录,dist 内保存了我们打好的包,上面命令使用

--formats

指定了打出

.tar.gz



.zip

包,如果不指定则如上表根据具体平台默认格式打包。

包的名称为

setup.py

中定义的

name

,



版权声明:本文为chenfeidi1原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。