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

使用 uv 进行 python 项目管理

文章目录

  • Why UV?
  • 安装 Installation
  • UV 项目开发
    • 项目结构
    • 依赖包管理
    • Python 环境管理
  • UV 项目构建和发布

Why UV?

  • 通过pyproject.tomlheuv.lock文件进行项目依赖管理,同时允许开发者在项目中进行不同 python 环境的管理和切换,单一命令实现完整的项目管理,无需pipvenv等其他工具。
  • pip10 倍以上更加便利快捷的依赖包管理

安装 Installation

Linux 和 MacOS 上的安装命令:

curl-LsSfhttps://astral.sh/uv/install.sh|sh

windows 安装命令:

powershell-ExecutionPolicy ByPass-c"irm https://astral.sh/uv/install.ps1 | iex"

其中,-ExecutionPolicy ByPass用于临时修改 Windows 的安全策略限制,允许在 PowerShell 中执行 psl 脚本。

安装完成之后,默认情况下终端并不了解 uv 的命令补全规则,需要额外让终端在启动时加载 uv 的补全规则:

echo'eval "$(uv generate-shell-completion bash)"'>>~/.bashrc

Windows:

if(!(Test-Path-Path$PROFILE)){New-Item-ItemType File-Path$PROFILE-Force}Add-Content-Path$PROFILE-Value'(& uv generate-shell-completion powershell) | Out-String | Invoke-Expression'

安装完成之后,可以直接运行uv命令,查看 help 内容。

UV 项目开发

项目结构

项目是 uv 的核心概念,通过uv init [your-project-name]可以初始化创建一个项目,初始化的目录结构如下:

. ├── .python-version ├── README.md ├── main.py └── pyproject.toml

例如uv init hello-world

其中,main.py文件为主入口文件,包含简单的示例代码:

defmain():print("Hello from hello-world!")if__name__=="__main__":main()

uv 通过一个pyproject.toml文件来描述这个 uv 项目,这是 uv 项目的核心文件,包含了这个项目的所有元数据比如项目名称、依赖等内容:

[project] name = "hello-world" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.13" dependencies = []

通过执行uv run main.py可以执行 python 脚本:

执行之后,项目下会额外生成一个uv.lock锁文件以及.venv/目录:

其中:

  • uv.lock是 uv 项目依赖的 python 包的版本信息锁文件,
  • .venv/是管理项目的 python 虚拟环境的文件夹,与系统的其他 python 环境相互隔离,uv 可以允许用户在一个项目中进行不同 python 环境的切换。初始化项目之后,默认的 python 环境是 uv 安装时携带的 python 环境,可以通过uv python命令查看当前项目的 python 环境,进行其他版本的 python 环境安装,切换环境等管理操作

初始化完成之后,后续就可以根据具体项目需求,使用 flask 等后台代码框架进行应用代码的初始化和开发了。

依赖包管理

uv 安装依赖包的方式如下

uvadd[package]uv pipinstallflask

可以使用与 pip 一样的方式使用==, >=, <=指定版本,或者版本条件安装进行安装:

uv pipinstall'ruff>=0.2.0'

一些依赖包设置了额外的依赖选项,需要通过package[option]的方式指定依赖项安装:

uv pipinstall"flask[dotenv]"

Python 环境管理

uv 项目中,一般通过uv venv创建虚拟环境(类似 conda):

uv venv--python3.12

使用uv python命令进行 python 环境管理:

# 常用,安装指定版本uv pythoninstall[version]uv pythoninstall3.12# 根据项目要求安装满足条件的版本uv pythoninstall'>=3.8,<3.10'# 安装多版本uv pythoninstall3.93.103.11

UV 项目构建和发布

通过build命令进行项目的构建,uv 可以支持构建whleel分发包(.whl)以及源码分发包--sdist.tar.gz)两种形式:

uv build--wheel# --sdist

运行完成之后,将会在项目根目录下面生成build/dist/两个文件夹,dist文件夹下面即包含了构建完成的可发布的结果。

http://www.jsqmd.com/news/753071/

相关文章:

  • 【UNet 改进 | 注意机制篇】UNet引入LSKA注意力机制(2024 WACV),二次创新
  • KeymouseGo完整指南:3分钟掌握鼠标键盘自动化,快速解放双手的免费方案
  • 从脚本自动化到专业开发:AutoHotkey V2扩展工具集的完整解决方案
  • QubitStateVector类内存泄漏暴雷事件(附NASA JPL验证通过的零拷贝量子态管理方案)
  • Nigate:让Mac彻底告别NTFS读写障碍的开源神器
  • 20个必备agent-skills技能一览:从需求定义到代码部署的全流程覆盖
  • dotenv-linter比较模式实战:多环境配置文件差异分析
  • [Triton笔记1]核心概念
  • Windows 11 + GTX 1060 也能跑!GROMACS 2020.6 溶菌酶模拟保姆级避坑指南
  • AListFlutter开发环境搭建:从零开始的Flutter项目构建
  • 3步搞定顽固窗口:WindowResizer让每个程序窗口都听话
  • 终极明日方舟自动化助手:MAA智能解放游戏时间完整指南
  • ThinkPHP 多应用模式与单应用模式在大型项目中如何选择?
  • Reactive Data Client的5个强大特性:为什么你应该选择它
  • 【2026年7月】日本语能力测试N1-N5历年真题及答案PDF电子版(2010-2025年12月)
  • 在多轮对话场景下体验 Taotoken 路由策略的稳定性与容灾
  • 构建企业级AI知识库:基于Jira与Confluence的智能上下文检索系统
  • Houdini FLIP流体高级技巧:用Volume Limits和Narrow Band优化大型海洋场景性能
  • 终极喜马拉雅音频下载解决方案:跨平台免费工具完整指南
  • 4.27-5.3
  • 2026南京防水公司深度调研TOP3榜单(口碑优先版) - GrowthUME
  • 别再手动算中心度了!用Gephi 0.10.1一键搞定社会网络分析(附节点表/边表模板)
  • agent-skills中的测试驱动开发:如何让AI代理写出可靠代码
  • 淘系风控tfstk分析
  • 从CNVD已公开漏洞报告里“淘金”:手把手教你复现并深挖关联漏洞,一份报告变多张证书
  • flutter中 onGenerateRoute回调函数
  • 企业如何利用Taotoken实现多团队API密钥管理与访问审计
  • Kotlin 数据容器 - Array sort 系列方法与 drop 系列方法
  • 3个痛点,1个解决方案:Transmission Remote GUI让你的远程BT下载管理如此简单
  • 为什么同一篇论文知网和维普AI率差这么多:两平台检测原理差异深度解读