1. UV的安装
- 独立安装
- 实测结果:需要科学上网才能进行独立安装
# windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
- 从 Pypi 安装
- 在本地端安装python,加入到环境变量;
- 在cmd窗口使用以下命令安装uv;
- 备注:如果只是在虚拟环境里面安装uv,请注意如果切换新的虚拟环境,而新的虚拟环境里没有安装过uv,则需要再次安装;
pip install uv
2. 旧项目如何导入UV
- 创建requirements.txt
pip list --format=freeze > requirements.txt
# 用于列出当前环境中已安装的所有 Python 包及其版本,并以 package==version 的格式输出这些包,同时将输出保存到 requirements.txt 文件中
- 建立虚拟环境。
uv venv [虚拟环境名称:不填则默认为.venv] --python 3.8 # 创建一个包含python3.8解释器的虚拟环境
- 以当前工作目录初始化项目名称;
uv init
- 着重关注以下生成文件
- .python-version:记录当前使用python版本,注意跟项目虚拟环境同步;
- pyproject.toml:项目的“蓝图”,描述了项目的基本信息和所需的依赖。
- 激活虚拟环境
.\.venv\Scripts\activate # 激活创建的虚拟环境.venv是自己创建虚拟环境的名称
- 根据requirements.txt安装依赖包
uv add -r .\requirements.txt
-
前面成功以后,如何在虚拟环境中快速切换python版本
-
按照下图修改.python-version文件里面的内容为想要的python版本
-
运行以下命令,则会在当前虚拟环境中直接切换python版本,同时也会自动处理安装包依赖
uv sync
- 运行
uv add
或uv sync
时,uv
会根据pyproject.toml
中的依赖声明,解析出具体的版本,并将其记录在uv.lock
文件中。
- 运行
-
3. 新项目如何导入UV
- 只需要执行前面的第2,3,4步就可以了;注意初始化项目的时候,如果不想以当前工作目录文件夹当成项目文件夹,可以按照以下指令;
uv init [项目名称]
4. pyproject.toml和uv.lock介绍
-
pyproject.toml
pyproject.toml
是 Python 项目的基础配置文件,用于定义项目的元数据和依赖信息。它是项目的“蓝图”,描述了项目的基本信息和所需的依赖。-
主要用途:
- 项目元数据:定义项目的名称、版本、作者、描述等信息。
- 依赖声明:列出项目所需的依赖包及其版本范围(例如
requests>=2.26.0
)。 - 构建配置:定义项目的构建工具(如
uv
或其他工具)和配置。
-
示例内容:
[project] name = "my_project" version = "0.1.0" description = "A sample project" authors = [{ name = "John Doe", email = "john@example.com" }] dependencies = [ "requests>=2.26.0", "uvicorn>=0.17.0", ]
-
-
uv.lock
文件
uv.lock
文件是uv
工具生成的锁定文件,用于记录项目中安装的依赖包的具体版本和来源。它是项目的“实现蓝图的具体方案”,确保依赖的版本一致性和可重现性。-
主要用途:
- 版本锁定:记录每个依赖包的确切版本(例如
requests==2.28.2
)。 - 来源锁定:记录依赖包的来源(例如 PyPI 或其他仓库)。
- 环境一致性:确保在不同环境中安装的依赖版本完全一致。
- 版本锁定:记录每个依赖包的确切版本(例如
-
示例内容:
[[package]] name = "requests" version = "2.28.2" source = "pypi" [[package]] name = "uvicorn" version = "0.17.6" source = "pypi"
-
-
两者的关系
pyproject.toml
和uv.lock
文件是相辅相成的,它们的关系可以总结为以下几点:
(1)pyproject.toml
是依赖的声明,uv.lock
是依赖的实现
pyproject.toml
定义了项目需要哪些依赖,以及它们的版本范围(例如requests>=2.26.0
)。uv.lock
记录了实际安装的依赖版本(例如requests==2.28.2
),确保每次安装时使用相同的版本。
(2)uv.lock
是从 pyproject.toml
派生出来的
- 当你运行
uv add
或uv sync
时,uv
会根据pyproject.toml
中的依赖声明,解析出具体的版本,并将其记录在uv.lock
文件中。 - 如果你手动修改了
pyproject.toml
,需要运行uv sync
来更新uv.lock
文件。
(3)uv.lock
确保环境一致性
- 如果团队成员共享项目时只共享
pyproject.toml
,可能会因为依赖版本不同而导致环境不一致。 - 如果同时共享
uv.lock
文件,团队成员可以使用uv sync
安装完全一致的依赖版本,确保环境一致。
- 举例说明
假设你在 pyproject.toml
中添加了一个依赖:
dependencies = [
"requests>=2.26.0",
]
当你运行 uv add requests
或 uv sync
时,uv
会解析出一个具体的版本(例如 requests==2.28.2
),并将其记录在 uv.lock
文件中:
[[package]]
name = "requests"
version = "2.28.2"
source = "pypi"
如果团队成员克隆了你的项目,并且同时共享了 pyproject.toml
和 uv.lock
文件,他们可以直接运行 uv sync
,安装完全一致的依赖版本。
- 总结
pyproject.toml
:项目的依赖声明文件,定义了依赖的名称和版本范围。uv.lock
:项目的锁定文件,记录了依赖的具体版本和来源,确保环境一致性。- 两者关系:
uv.lock
是从pyproject.toml
派生出来的,uv.lock
文件的存在使得依赖的安装更加可靠和可重现。