如何打包和部署 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 文件、创建和分发包以及安装和使用我们的包。通过遵循上述步骤,我们可以确保我们的应用程序易于打包和部署,并且其他程序员可以轻松使用。

更新于:2023年4月20日

3K+ 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告