为Pip包添加可执行脚本 | AI生成和翻译

Home 2025.10

在 Python Pip 包中创建可执行脚本

若要在通过 pip 安装的 Python 包中包含可执行脚本(即命令行工具),您需要在包的配置文件中定义 入口点。这使得用户在安装后可以直接运行您的脚本(例如在终端中输入 my-script)。

我们将使用一个简单示例:名为 mytools 的包,其中包含一个用于打印问候语的 greet 脚本。

步骤 1:设置包结构

创建如下目录结构:

mytools/
├── pyproject.toml          # 现代配置文件(推荐替代 setup.py)
├── README.md
└── src/
    └── mytools/
        ├── __init__.py     # 使其成为包
        └── greet.py        # 脚本逻辑

src/mytools/__init__.py 中(可为空或包含版本信息):

__version__ = "0.1.0"

src/mytools/greet.py 中(脚本将调用的函数):

import sys

def main():
    name = sys.argv[1] if len(sys.argv) > 1 else "World"
    print(f"Hello, {name}!")

if __name__ == "__main__":
    main()

步骤 2:在 pyproject.toml 中配置入口点

使用 [project.scripts] 部分定义控制台脚本。这会指示 pip 创建可执行包装器。

[build-system]
requires = ["hatchling"]  # 或 "setuptools", "flit" 等
build-backend = "hatchling.build"

[project]
name = "mytools"
version = "0.1.0"
description = "一个简单的工具包"
readme = "README.md"
requires-python = ">=3.8"
dependencies = []  # 在此添加依赖项,例如 "requests"

[project.scripts]
greet = "mytools.greet:main"  # 格式:脚本名称 = 包.模块:函数

如果您偏好使用较旧的 setup.py(仍可使用但不推荐):

from setuptools import setup, find_packages

setup(
    name="mytools",
    version="0.1.0",
    packages=find_packages(where="src"),
    package_dir={"": "src"},
    entry_points={
        "console_scripts": [
            "greet = mytools.greet:main"
        ]
    },
    # ... 其他字段如 description, install_requires
)

步骤 3:构建和安装包

  1. 安装构建工具:pip install build twine(如果使用 hatchling 后端则安装 hatchling

  2. 构建包:
    python -m build
    

    这将在 dist/ 目录中创建 .tar.gz.whl 文件

  3. 本地安装测试:
    pip install -e .  # 可编辑模式(更改立即生效)
    

    或进行干净安装:pip install dist/mytools-0.1.0-py3-none-any.whl

  4. 测试:在终端中运行 greet Alice,应输出 “Hello, Alice!”

步骤 4:分发(可选)

提示

有关更高级的设置(例如使用 Poetry 或 Flit),请查阅官方文档。

参考文档


Back

x-ai/grok-4-fast

Donate