00362 uv create projects


前言

uv支持管理Python项目,这些项目在pyproject.toml文件中定义它们的依赖项。

Operating System: Ubuntu 22.04.4 LTS

参考文档

  1. Working on projects

创建一个新项目

您可以使用uv init命令创建一个新的Python项目:

uv init hello-world
cd hello-world

或者,您可以在工作目录中初始化一个项目:

mkdir hello-world
cd hello-world
uv init

uv将创建以下文件:

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

main.py文件包含一个简单的“Hello world”程序。用uv run试试:

uv run main.py

项目结构

一个项目由几个重要的部分组成,它们协同工作并允许uv管理您的项目。除了uv init创建的文件之外,uv将在您第一次运行项目命令时在项目根目录中创建一个虚拟环境和uv. lock文件,即uv run、uv sync或uv lock。

完整的列表如下所示:

.
├── .venv
│   ├── bin
│   ├── lib
│   └── pyvenv.cfg
├── .python-version
├── README.md
├── main.py
├── pyproject.toml
└── uv.lock

pyproject.toml

pyproject.toml 包含了关于您项目的元数据:

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

您将使用此文件来指定依赖项,以及有关项目的详细信息,例如其描述或许可证。您可以手动编辑此文件,或使用uv add和uv remove等命令从终端管理您的项目。

有关开始使用pyproject. toml格式的更多详细信息,请参阅官方pyproject.toml指南

您还将使用此文件在[tools. uv]部分中指定uv配置选项

.python-version

.python-version文件包含项目的默认Python版本。此文件告诉uv在创建项目的虚拟环境时使用哪个Python版本。

.venv

.venv文件夹包含您项目的虚拟环境,这是一个与系统其余部分隔离的Python环境。这是uv安装项目依赖项的地方。

有关详细信息,请参阅项目环境文档

uv.lock

uv.lock 是一个跨平台的锁定文件,其中包含有关项目依赖项的精确信息。与用于指定项目大致需求的 pyproject.toml 不同,锁定文件包含了已解析并安装到项目环境中的确切版本信息。该文件应提交至版本控制系统,以便在不同机器上实现一致且可重现的依赖安装。

uv.lock 是一个可读的 TOML 文件,但由 uv 管理,不应手动编辑。

有关详细信息,请参阅锁定文件文档

管理依赖项

你可以使用 uv add 命令将依赖项添加到 pyproject.toml 中。这将同时更新锁文件和项目环境:

uv add requests

你还可以指定版本约束或替代源:

# Specify a version constraint
uv add 'requests==2.31.0'

# Add a git dependency
uv add git+https://github.com/psf/requests

如果你正在从 requirements.txt 文件迁移,可以使用 uv add 命令并加上 -r 标志,以添加文件中的所有依赖项:

# Add all dependencies from `requirements.txt`.
uv add -r requirements.txt -c constraints.txt

要移除一个包,可以使用 uv remove 命令:

uv remove requests

要升级一个包,运行 uv lock 并使用 –upgrade-package 标志:

uv lock --upgrade-package requests

–upgrade-package 标志会尝试将指定的包更新到最新的兼容版本,同时保持锁文件的其余部分不变。

有关详细信息,请参阅管理依赖项的文档。

管理版本

可以使用 uv version 命令来查看你包的版本。

要获取包的版本,请运行 uv version:

uv version

要获取不带包名称的版本号,请使用 –short 选项:

uv version --short

要以 JSON 格式获取版本信息,请使用 –output-format json 选项:

uv version --output-format json

有关更新包版本的详细信息,请参阅发布指南

运行命令

uv run 可用于在你的项目环境中运行任意脚本或命令。

每次执行 uv run 之前,uv 都会检查锁文件是否与 pyproject.toml 保持同步,并确保环境与锁文件一致,从而在无需手动干预的情况下保持项目同步。uv run 可保证你的命令在一致且锁定的环境中运行。

例如,使用 Flask:

uv add flask
uv run -- flask run -p 3000

或者,运行一个脚本:

# example.py
# Require a project dependency
import flask

print("hello world")
uv run example.py

或者,你可以使用 uv sync 手动更新环境,然后激活环境后再执行命令:

uv sync
source .venv/bin/activate
flask run -p 3000
python example.py

要在不使用 uv run 的情况下在项目中运行脚本和命令,必须先激活虚拟环境。虚拟环境的激活方式因 shell 和平台而异。

有关详细信息,请参阅在项目中运行命令和脚本的文档。

构建分发包

uv build 可用于为你的项目构建源代码分发包和二进制分发包(wheel)。

默认情况下,uv build 会构建当前目录中的项目,并将生成的构件文件放在 dist/ 子目录中:

uv build
ls dist/

更多详细信息,请参阅项目构建相关文档

下一步

要深入了解如何使用 uv 进行项目开发,请参阅项目概念页面命令参考文档

或者,继续阅读以了解如何将你的项目构建并发布到包索引

结语

第三百六十二篇博文写完,开心!!!!

今天,也是充满希望的一天。


文章作者: LuYF-Lemon-love
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LuYF-Lemon-love !
  目录