如何打包和部署 Python CLI 应用程序
根据界面,我们有两种类型的应用程序:CLI(**C**ommand **L**ine **I**nterface,命令行界面)应用程序和 GUI(**G**raphical **U**ser **I**nterface,图形用户界面)应用程序。
命令行应用程序或控制台应用程序可以通过文本界面从 shell 或命令行访问,它们接受用户以文本格式输入。
与提供图形界面的 GUI 应用程序不同,GUI 应用程序包含按钮、文本框和图标,供用户访问底层应用程序。
Python 是一种流行的用于开发 CLI 应用程序的编程语言,尽管打包和分发此类应用程序的过程有点困难。我们可以使用内置和外部工具轻松实现这一点。
让我们看看使用 Python 打包和部署 CLI 应用程序所涉及的所有步骤。
步骤 1:创建 Python 包
首先,我们必须创建一个 Python 包来创建 CLI 应用程序。包是一个包含 **init.py** 文件的文件夹,这表示该文件夹是一个 Python 包。当有人安装此 CLI 应用程序时,这将非常有用。
我们可以为我们的包创建任何名称的文件夹,并在其中添加 2 个文件,第一个文件是 **init.py**,第二个文件是 **my_cli_app.py**。
在这个例子中,我们尝试创建一个名为 **my_package** 的包,并添加一个名为 **my_cli_app.py** 的文件,其中包含我们 CLI 应用程序的代码。
my_package/ __init__.py my_cli_app.py
步骤 2:定义 CLI 入口点
在第二步中,我们将定义一个命令行界面入口点或 CLI 入口点。入口点是当我们从 CLI 运行应用程序时首先执行的 Python 函数。
click 库是一个非常流行的 Python 库,通常用于创建 CLI 应用程序。我们必须导入 Python 的 click 库来创建入口点。
在这个例子中,我们使用上面提到的 Python click 库定义了一个 CLI 入口点。`@click.command()` 装饰器通知 click 此函数是一个 CLI 命令。`@click.option()` 装饰器定义了一个命令行选项,允许用户向命令传递参数。
import click @click.command() @click.option('--name', default='World', help='The person to greet.') def hello(name): click.echo(f'Hello, {name}!') if __name__ == '__main__': hello()
步骤 3:将依赖项添加到 setup.py
第三步是将我们的依赖项添加到 **setup.py 文件**。我们的 CLI 应用程序需要这些依赖项。**setup.py** 文件由 Python 用于构建和安装我们的 CLI 应用程序。为了添加依赖项,我们将使用 **setuptools.setup()** 函数中的 **install_requires** 参数。
在这里,我们使用 install_requires 参数添加 click 作为依赖项。我们还使用 entry_points 参数为我们的 CLI 应用程序定义了一个入口点。console_scripts 入口点告诉 Python 这是一个命令行脚本,并且 my_cli_app 命令被定义为入口点。
from setuptools import setup, find_packages setup( name='my_package', version='0.1', packages=find_packages(), install_requires=[ 'click', ], entry_points=''' [console_scripts] my_cli_app=my_package.my_cli_app:hello ''', )
步骤 4:构建和分发我们的包
打包和部署基于 Python 的 CLI 应用程序的最后一步或第四步是构建和分发我们的包。使用“setuptools”库,我们可以轻松地构建和分发我们的包。
要构建我们的包,请运行以下命令:
$ python setup.py sdist bdist_wheel
上述命令将在 dist 目录或文件夹中创建我们的包的源分发 (sdist) 和二进制分发 (bdist_wheel)。源分发 (sdist) 包含源代码和资源,二进制分发包含编译后的代码,可以安装在不同的平台上。
要分发我们的包,我们需要使用 twine 库将其上传到 Python 包索引 (PyPI)。为此,我们必须在 PyPI 上拥有一个帐户。因此,我们需要在 PyPI 上创建一个帐户,然后使用 pip 安装 twine 库:
$ pip install twine
接下来,我们可以使用以下命令将我们的包上传到 PyPI:
$ twine upload dist/*
此命令会将 dist/ 目录中的所有分发版上传到 PyPI。
步骤 5:安装和使用我们的包
要安装我们的 CLI 应用程序包,用户可以使用 pip 从 PyPI 下载和安装或打包:
$ pip install my_package
安装包后,用户可以使用 entry_points 参数中定义的 CLI 命令。在下面的代码片段中,我们将一个参数作为 name 传递给 --name 选项,该选项将被 hello 函数用来打印带有作为参数给出的名称的问候消息。这使得应用程序更友好一些。
$ my_cli_app --name Alice Hello, Alice!
结论
在本文中,我们学习了如何使用 Python 打包和部署命令行应用程序。我们学习了什么是 CLI 应用程序,它如何有用,以及创建和部署 CLI 应用程序所需的所有步骤。我们可以按照本文中编写的每个步骤操作,然后我们可以轻松地创建 Python 包、定义 CLI 入口点、将依赖项添加到 setup.py 文件、创建和分发包以及安装和使用我们的包。通过遵循上述步骤,我们可以确保我们的应用程序易于打包和部署,并且其他程序员可以轻松使用。