文章大纲
程序编写完成可以发布后,通常需要将其打包,以便更好的分发。
Setuptools 是用于发布 Python 包的工具包,能够使用 Python 轻松的编写安装脚本,安装脚本可用于生成可发布的归档文件,以便用户来编译和安装编写的库。
Setuptools 基础
首先需要使用 pip install setuptools
对 Setuptools 进行安装。
然后就可以使用 Setuptools 可完成很多任务,只需编写简单的脚本即可,示例:
from setuptools import setup
setup(name='Hello',
version='1.0',
description='A simple example',
author='imxcai',
py_modules=['hello'])
以上对当前目录中的 hello.py
进行打包。
运行 python setup.py --help-commands
可查看对应子命令的帮助。
使用 build
来让 Setuptools 来构建安装所需的内容:
python setup.py build
会有以下类似的输出:
running build
running build_py
creating build
creating build/lib
copying hello.py -> build/lib
Setuptools 将创建 build 目录:
tree build/
build/
├── bdist.linux-x86_64
└── lib
└── hello.py
3 directories, 1 file
使用 install
命令来安装 build
完成的模块:
python setup.py install
会有以下类似的输出:
running install_lib
running build_py
copying hello.py -> build/lib
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/egg
copying build/lib/hello.py -> build/bdist.linux-x86_64/egg
在安装过程中,Setuptools 创建了一个 .egg
文件,这是一个独立的 Python 包。
打包
有了能让客户安装模块的脚本 setup.py
后,就可以使用其来创建归档文件了。还可以用于创建 Windows 安装程序、RPM 包、egg 文件、wheel 文件(取代 egg)。
要创建源代码归档文件,使用 sdist
:
python setup.py sdist
会有以下类似的输出:
creating Hello-1.0/Hello.egg-info
making hard links in Hello-1.0...
hard linking hello.py -> Hello-1.0
hard linking setup.py -> Hello-1.0
hard linking Hello.egg-info/PKG-INFO -> Hello-1.0/Hello.egg-info
hard linking Hello.egg-info/SOURCES.txt -> Hello-1.0/Hello.egg-info
hard linking Hello.egg-info/dependency_links.txt -> Hello-1.0/Hello.egg-info
hard linking Hello.egg-info/top_level.txt -> Hello-1.0/Hello.egg-info
Writing Hello-1.0/setup.cfg
Creating tar archive
removing 'Hello-1.0' (and everything under it)
会创建一个 dist 目录,归档文件就位于此目录中。
客户拿到归档文件后,可提取归档内容,然后执行 python setup.py install 就可以进行安装了。