包装入口点

建议将命令行实用程序编写为带有入口点的可安装程序包,而不是告诉用户运行 python hello.py

分发包是一种 .whl 使用pip或其他Python安装程序安装的文件。您可以使用 pyproject.toml 文件来描述项目以及如何将其构建到包中。您可以将此包上传到PyPI,或以其他方式将其分发给您的用户。

Python安装程序创建将运行指定的Python函数的可执行脚本。这些被称为“入口点”。安装程序知道如何创建可执行文件,而与操作系统无关,因此它可以在Linux、Windows、MacOS等操作系统上运行。

项目文件

要安装带有入口点的应用程序,您只需脚本和 pyproject.toml 文件。下面是一个项目目录示例:

hello-project/
    src/
        hello/
            __init__.py
    pyproject.toml

内容 hello.py

import click

@click.command()
def cli():
    """Prints a greeting."""
    click.echo("Hello, World!")

内容 pyproject.toml

[project]
name = "hello"
version = "1.0.0"
description = "Hello CLI"
requires-python = ">=3.11"
dependencies = [
    "click>=8.1",
]

[project.scripts]
hello = "hello:cli"

[build-system]
requires = ["flit_core<4"]
build-backend = "flit_core.buildapi"

神奇之处在于 project.scripts 一节。每行标识一个可执行脚本。等号前的第一部分 (= )是应该生成的脚本的名称,第二部分是导入路径,后跟冒号 (: )和要调用的函数(Click命令)。

安装

安装包后,安装程序将根据配置创建可执行脚本。在开发过程中,可以在可编辑模式下使用 -e 选择。记住要使用虚拟环境!

$ python -m venv .venv
$ . .venv/bin/activate
$ pip install -e .

之后,您的命令应该可用:

$ hello
Hello, World!