如何使用uv构建Python包并本地安装步骤详解

 更新时间:2025年06月06日 10:05:13   作者:梦想画家  
uv是一个由Astral开发的超快Python包安装工具和解析器,使用Rust编写,旨在替代pip、pip-tools和virtualenv,提供更快的性能和更好的依赖管理,这篇文章主要介绍了如何使用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 greet
print(greet("World"))  # 输出:Hello, World!

关键注意事项

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

扩展应用场景

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

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

总结

到此这篇关于如何使用uv构建Python包并本地安装的文章就介绍到这了,更多相关uv构建Python包并本地安装内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在django中使用自定义标签实现分页功能

    在django中使用自定义标签实现分页功能

    这篇文章主要介绍了在django中使用自定义标签实现分页功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Python爬虫之urllib基础用法教程

    Python爬虫之urllib基础用法教程

    这篇文章主要为大家详细介绍了Python爬虫1.1 urllib基础用法教程,用于对Python爬虫技术进行系列文档讲解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • Python将文字转成语音并读出来的实例详解

    Python将文字转成语音并读出来的实例详解

    今天小编就为大家分享一篇Python将文字转成语音并读出来的实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 浅谈Python中用datetime包进行对时间的一些操作

    浅谈Python中用datetime包进行对时间的一些操作

    下面小编就为大家带来一篇浅谈Python中用datetime包进行对时间的一些操作。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • python的构建工具setup.py的方法使用示例

    python的构建工具setup.py的方法使用示例

    本篇文章主要介绍了python的构建工具setup.py的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • python使用pandas实现筛选功能方式

    python使用pandas实现筛选功能方式

    在数据分析的过程中通常要对数据进行清洗与处理,而其中比较重要和常见的操作就有对数据进行筛选与查询,下面这篇文章主要给大家介绍了关于python使用pandas实现筛选功能方式的相关资料,需要的朋友可以参考下
    2022-06-06
  • python随机3分钟发送一次消息完整代码

    python随机3分钟发送一次消息完整代码

    最近我接到这样的任务需求有一个实时任务,想要间隔3分钟发送,最近的一次消息,接下来通过本文给大家分享python随机3分钟发送一次消息,需要的朋友可以参考下
    2024-03-03
  • np.meshgrid中的indexing参数问题解决

    np.meshgrid中的indexing参数问题解决

    本文主要介绍了np.meshgrid中的indexing参数问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 关于Python中的if __name__ == __main__详情

    关于Python中的if __name__ == __main__详情

    在学习Python的过程中发现即使把if __name__ == ‘__main__’ 去掉,程序还是照样运行。很多小伙伴只知道是这么用的,也没有深究具体的作用。这篇文字就来介绍一下Python中的if __name__ == ‘__main__’的作用,需要的朋友参考下文
    2021-09-09
  • Webots下载安装 + Pycharm联调使用教程

    Webots下载安装 + Pycharm联调使用教程

    Webots是一个开源的三维移动机器人模拟器,它最初是作为研究移动机器人中各种控制算法的研究工具开发的,自2018年12月起,Webots作为开源软件发布,并获得Apache 2.0许可证,这篇文章主要介绍了Webots下载安装 + Pycharm联调 ,需要的朋友可以参考下
    2023-02-02

最新评论