本文档介绍了 uv 的面向项目的命令和工作区管理功能。uv 中的项目管理包括 Python 项目和工作区的创建、配置、依赖管理和执行。有关工具安装和执行的信息,请参阅工具管理。有关 Python 版本发现和安装的详细信息,请参阅Python 管理。
uv 区分单个项目和可以包含多个相关项目的工作区。项目由 pyproject.toml 文件定义,而工作区是协同管理的多个项目集合。
来源: crates/uv-workspace/src/workspace.rs99-119 crates/uv/src/commands/project/mod.rs1-71
uv 中的项目遵循定义的生命周期,特定命令管理状态之间的转换
来源: crates/uv/src/commands/project/init.rs39-186 crates/uv/src/commands/project/add.rs63-581 crates/uv/src/commands/project/lock.rs77-236
项目管理系统围绕一个中心模块构建,该模块分派到特定的命令实现
来源: crates/uv/src/commands/project/mod.rs59-70 crates/uv/src/commands/project/mod.rs382-423
项目命令在不同的目标类型上运行,这些目标类型决定了操作的作用域和执行方式
来源: crates/uv/src/commands/project/add.rs626-692 crates/uv/src/commands/project/mod.rs1200-1350
uv 的 uv init 命令通过 InitKind 和 InitProjectKind 枚举支持不同的项目模板
来源: crates/uv/src/commands/project/init.rs272-297 crates/uv-configuration/src/project_build_backend.rs1-39
项目初始化包括工作区发现逻辑,该逻辑决定是创建独立项目还是集成到现有工作区
来源: crates/uv/src/commands/project/init.rs298-343 crates/uv-workspace/src/workspace.rs143-236
依赖项修改命令遵循验证、修改和同步的一致模式
来源: crates/uv/src/commands/project/add.rs547-581 crates/uv/src/commands/project/remove.rs42-371
uv 支持不同的依赖项类型和来源规范
来源: crates/uv/src/commands/project/add.rs626-747 crates/uv-workspace/src/pyproject.rs1-50
锁定系统使用不同的模式来处理各种场景
来源: crates/uv/src/commands/project/lock.rs238-248 crates/uv/src/commands/project/lock.rs302-384
锁定验证系统确定何时可以重用现有的锁定文件
来源: crates/uv/src/commands/project/lock.rs679-760 crates/uv/src/commands/project/lock.rs1150-1350
同步操作根据项目配置和命令参数确定要安装的内容
来源: crates/uv/src/commands/project/sync.rs493-541 crates/uv/src/commands/project/install_target.rs1-50
项目环境可以处于影响同步行为的不同状态
来源: crates/uv/src/commands/project/sync.rs131-268 crates/uv/src/commands/project/mod.rs1200-1300
uv run 命令通过复杂的环境解析,同时处理项目和脚本执行上下文。
来源: crates/uv/src/commands/project/run.rs65-98 crates/uv/src/commands/project/run.rs458-881
运行命令支持在基础环境之上叠加额外的要求。
来源: crates/uv/src/commands/project/run.rs904-961 crates/uv/src/commands/project/environment.rs1-100