Python 打包

PythonBeginner
立即练习

介绍

本实验将介绍 setup.py 脚本,它是使用传统 Distutils 库打包 Python 项目的基本组成部分。你将了解它的用途、结构以及如何使用它来使你的 Python 模块可安装。完成本实验后,你将创建一个基本的 setup.py 文件并使用它来安装一个简单的 Python 包。

引言

在这一步中,你将理解 setup.py 脚本在通过 Distutils 构建、分发和安装模块的所有活动中的核心作用。

setup 脚本是使用 Distutils 构建、分发和安装模块的核心。它的主要目的是向 Distutils 描述你的模块分发情况,以便对你的模块执行操作的各种命令能够正确执行。

setup.py 文件位于 Python 项目的核心位置。它描述了关于你项目的所有元数据(metadata)。虽然你可以添加许多字段来提供丰富的元数据,但只有三个是必需的:

  • name: 你的包的名称。如果你希望在 Python 包索引(PyPI)上发布你的包,这个名称必须是唯一的。
  • version: 你包的当前版本。这有助于用户区分不同的发布版本。
  • packages: 要包含在你的分发包中的所有 Python 包的列表。

一旦你有了 setup.py 文件,你就可以轻松地将 Python 包安装到你的环境中。推荐的方法是使用 pip 从当前目录安装包。在包含 setup.py 文件的同一目录下的终端中运行以下命令:

pip install .

此命令将处理模块的构建和安装过程,使其可以在其他 Python 脚本中被导入和使用。在下一步中,我们将创建一个 setup.py 文件并运行此命令。

示例

在这一步中,我们将回顾一个基本的 setup.py 脚本示例,并为我们的项目创建一个。此示例将包含必需的字段以及可选信息,例如许可证和从 README.txt 文件中读取的长描述。

首先,导航到为你准备好的项目目录。使用 IDE 左侧的文件浏览器查看 pythonCheatsheet 目录。在其中,你会发现一个 pipenv 子目录和一个 README.txt 文件。

现在,在 ~/project/pythonCheatsheet 目录下创建一个名为 setup.py 的新文件。点击文件浏览器中的 pythonCheatsheet 文件夹,然后点击“新建文件”图标,并将其命名为 setup.py。

将以下代码复制并粘贴到你新创建的 setup.py 文件中:

## setup.py: define package metadata for distribution
from distutils.core import setup

setup(
   name='pythonCheatsheet',  ## Package name (must be unique on PyPI)
   version='0.1',  ## Version number
   packages=['pipenv',],  ## List of packages to include
   license='MIT',  ## License type
   long_description=open('README.txt').read(),  ## Read description from file
)

我们来分解一下这个脚本:

  • from distutils.core import setup: 此行导入 setup 函数,它是脚本的主要入口点。
  • name='pythonCheatsheet': 定义我们包的名称。
  • version='0.1': 设置初始版本。
  • packages=['pipenv',]: 告诉 Distutils 要包含的包位于 pipenv 目录中。
  • license='MIT': 指定包分发的许可证类型。
  • long_description=open('README.txt').read(): 读取 README.txt 的内容,为包提供详细描述。

setup.py 文件准备好后,通过点击 IDE 底部终端面板中的 + 图标打开一个终端。确保你的当前目录是 ~/project/pythonCheatsheet。你可以通过运行 cd ~/project/pythonCheatsheet 导航到该目录。

运行安装命令:

pip install .

你将在终端中看到 pip 构建和安装包的输出。输出将如下所示,最后是包已安装的确认信息:

Processing /home/labex/project/pythonCheatsheet
Building wheels for collected packages: pythonCheatsheet
  Building wheel for pythonCheatsheet (setup.py) ... done
  Created wheel for pythonCheatsheet: pythonCheatsheet-0.1-py3-none-any.whl
  Stored in directory: /tmp/pip-wheel-xxxxx
Successfully built pythonCheatsheet
Installing collected packages: pythonCheatsheet
Successfully installed pythonCheatsheet-0.1

为确认安装成功,你可以使用 pip 列出已安装的包并筛选出你的新包:

pip list | grep pythonCheatsheet

你应该会看到你的包及其版本列出:

pythonCheatsheet  0.1

恭喜!你已成功创建了一个 setup.py 文件并安装了一个 Python 包。

总结

在这个实验(Lab)中,你学习了 setup.py 脚本在使用 Distutils 进行 Python 项目分发中的基本作用。你了解了包所需的关键元数据(metadata)字段:name、version 和 packages。最后,你创建了一个实用的 setup.py 文件,包含了如 license 和 long_description 等附加元数据,并使用 pip install . 命令成功地将你的包安装到本地环境中。你现在具备了使你自己的 Python 项目可分发的基本知识。