Python 基础学习19:打包

文章大纲

程序编写完成可以发布后,通常需要将其打包,以便更好的分发。
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 就可以进行安装了。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部