从零开始:用uv构建并发布一个Python CLI应用,集成CI/CD自动化发布与Docker容器化部署

发布于:2025-09-06 ⋅ 阅读:(14) ⋅ 点赞:(0)

概述

从一个空目录开始,使用 uv 创建、开发、构建并发布一个名为 ccyy-demo 的命令行调用的工具

初始化项目

uv 提供了 uv init 命令,可以快速生成一个遵循最佳实践的项目骨架。使用 --package 参数可以直接创建标准的 src 布局。

1.基于已有项目进行初始化

# 创建并进入项目根目录
mkdir ccyy-demo
cd ccyy-demo

# 在当前项目下初始化并生成标准目录结构
# 会自动创建虚拟环境 (.venv)、pyproject.toml, 以及src/ccyy_demo/__init__.py源代码结构
uv init . --package

2.使用uv创建并初始化项目

uv init --package ccyy_demo
# 需单独创建venv环境
uv venv

现在,你的目录结构应该是这样的:

ccyy-demo/
├── .venv/
├── pyproject.toml
├── .python-version
├── .gitignore
├── README.md
└── src/
    └── ccyy_demo/
        ├── __init__.py

编写应用代码

创建 src/ccyy_demo/main.py 文件,写入命令行调用工具的代码核心逻辑。将使用 argparse 来处理命令行参数。

import argparse

def main():
    """CLI 工具的主入口函数"""
    parser = argparse.ArgumentParser(
        description="一个由 ccyy-demo 创建的、使用 uv 构建的简单 CLI 工具。"
    )
    parser.add_argument(
        "--name",
        default="World",
        help="The name to greet."
    )
    args = parser.parse_args()
    print(f"Hello, {
     
     args.name}! This is ccyy-demo speaking.")

if __name__ == "__main__":
    main()

src/ccyy_demo/__init__.py的执行入口添加实现函数

from .main import main as ccyy_demo_main

def main() -> None:
    ccyy_demo_main()

定义项目 (pyproject.toml)

pyproject.toml是现代Python项目的核心配置文件,它遵循 PEP 621 标准,用于定义项目的元数据、依赖项和构建系统。

uv init 已经为生成了一个 pyproject.toml模板,默认内容如下:

[project]
name = "ccyy-demo"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.10"
dependencies = []

[project.scripts]
ccyy-demo = "ccyy_demo:main"

[build-system]
requires = ["hatchling"]
build-backend = "hatchli

网站公告

今日签到

点亮在社区的每一天
去签到