文章目录Why UV安装 InstallationUV 项目开发项目结构依赖包管理Python 环境管理UV 项目构建和发布Why UV通过pyproject.tomlheuv.lock文件进行项目依赖管理同时允许开发者在项目中进行不同 python 环境的管理和切换单一命令实现完整的项目管理无需pipvenv等其他工具。比pip10 倍以上更加便利快捷的依赖包管理安装 InstallationLinux 和 MacOS 上的安装命令curl-LsSfhttps://astral.sh/uv/install.sh|shwindows 安装命令powershell-ExecutionPolicy ByPass-cirm https://astral.sh/uv/install.ps1 | iex其中-ExecutionPolicy ByPass用于临时修改 Windows 的安全策略限制允许在 PowerShell 中执行 psl 脚本。安装完成之后默认情况下终端并不了解 uv 的命令补全规则需要额外让终端在启动时加载 uv 的补全规则echoeval $(uv generate-shell-completion bash)~/.bashrcWindows: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 pipinstallruff0.2.0一些依赖包设置了额外的依赖选项需要通过package[option]的方式指定依赖项安装uv pipinstallflask[dotenv]Python 环境管理uv 项目中一般通过uv venv创建虚拟环境类似 condauv venv--python3.12使用uv python命令进行 python 环境管理# 常用安装指定版本uv pythoninstall[version]uv pythoninstall3.12# 根据项目要求安装满足条件的版本uv pythoninstall3.8,3.10# 安装多版本uv pythoninstall3.93.103.11UV 项目构建和发布通过build命令进行项目的构建uv 可以支持构建whleel分发包.whl以及源码分发包--sdist.tar.gz两种形式uv build--wheel# --sdist运行完成之后将会在项目根目录下面生成build/和dist/两个文件夹dist文件夹下面即包含了构建完成的可发布的结果。