当前位置: 首页 > news >正文

如何使用 uv 构建 Python 包并本地安装

本文将逐步指导你创建一个简单的 Python 包,并将其本地安装到机器或云环境中。完成本教程后,你将拥有一个可复用的 Python 库,可直接通过 pip 安装或在项目中导入使用。

在这里插入图片描述

步骤详解

Step 0: 选择构建工具 - 使用 uv

  • 推荐理由uv 是类似 poetry 的现代打包工具,默认使用 hatchling 作为构建后端,支持 PEP 517/518 标准。

  • 安装方法:

    # 通过 Homebrew 安装(MacOS)
    brew install uv
    # 或直接通过 PyPI
    pip install uv
    

Step 1: 创建包目录结构

使用 uv 快速初始化项目结构:

uv init --lib my-package

生成后的目录如下:

my_package/
├── src/
│   └── my_package/
│       ├── __init__.py       # 标记为 Python 包
│       └── your_code.py      # 存放核心代码
│       └── py.typed          # 类型标注声明(可选)
├── pyproject.toml          # 项目元数据和依赖配置
├── README.md               # 项目文档
└── .python-version         # 指定 Python 版本

Step 2: 编写包代码

src/my_package/your_code.py 中添加功能代码:

# my_package/your_code.py
def greet(name: str) -> str:"""返回问候语"""return f"Hello, {name}!"

Step 3: 配置 pyproject.toml

填写项目元数据和依赖项:

[project]
name = "my-package"
version = "0.1.0"
description = "一个简单的本地 Python 包示例"
readme = "README.md"
authors = [{ name = "Sarah Glasmacher", email = "sarah@example.com" }]
requires-python = ">=3.11"
dependencies = [][build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

Step 4: 构建分发包

运行以下命令生成 .whl.tar.gz 文件:

uv build

构建完成后,dist/ 目录下会生成类似以下的文件:

dist/
├── my_package-0.1.0-py3-none-any.whl
└── my_package-0.1.0.tar.gz

Step 5: 本地安装包

方法 1:直接安装构建产物
pip install dist/my_package-0.1.0-py3-none-any.whl
方法 2:以编辑模式安装(实时同步代码)
pip install -e .

Step 6: 测试安装

打开 Python 终端验证:

from my_package.your_code import greetprint(greet("World"))  # 输出:Hello, World!

关键注意事项

  1. 模块化设计:将代码按功能拆分为独立模块,便于维护和复用。
  2. 依赖管理:通过 dependencies 字段声明依赖,或使用 uv add <package> 自动更新 pyproject.toml
  3. 版本控制:每次发布新版本前更新 version 字段,避免冲突。

扩展应用场景

  • 云部署:将打包后的代码上传至 Databricks 或 AWS Lambda,直接调用云端计算资源。
  • 协作开发:通过 PyPI 发布包(需额外配置),团队成员可直接 pip install 同步代码。

通过本文,你已掌握 Python 包的基础构建和本地安装流程。下一阶段可尝试 将包发布到 PyPI,实现全球范围内的代码共享!

相关文章:

  • 【算法笔记】动态规划基础(一):dp思想、基础线性dp
  • 数据结构与算法学习笔记(Acwing提高课)----动态规划·数字三角形
  • Kubernetes (k8s) 日常运维命令总结
  • 12-DevOps-Gitlab托管Jenkinsfile
  • TDengine 数据订阅设计
  • Linux驱动开发2 - 内核定时器驱动
  • 时序数据库 TDengine 助力石油石化业务, 平滑接替 Oracle 数据库
  • 【GESP】C++二级真题 luogu-B4259 [GESP202503 二级] 等差矩阵
  • Spark集群搭建之Yarn模式
  • PyCharm 链接 Podman Desktop 的 podman-machine-default Linux 虚拟环境
  • LeetCode-46. 全排列
  • 1、AI及LLM基础:OpenAI 开发
  • NoSql文档型数据库——Mongodb
  • Apache中间件解析漏洞与安全加固
  • Python流程控制
  • FANUC机器人GI与GO位置数据传输设置
  • 初识Redis · 事务
  • 项目组合管理PPM
  • 5.4.云原生与服务网格
  • uniapp返回上一页接口数据更新了,页面未更新
  • 上海体育消费节将从5月持续至11月,推出运动装备商品促销活动
  • “2025未来地球:科学与应用大会”在江西景德镇开幕
  • 中华人民共和国和阿塞拜疆共和国关于建立全面战略伙伴关系的联合声明
  • 宁夏回族自治区人大环境与资源保护委员会主任委员张柏森被查
  • 上海与丰田汽车签署战略合作协议,雷克萨斯纯电动汽车项目落子金山
  • 2025年度“沪惠保”将于4月22日开售,保费不变