文章

01 Python基础 - 包管理器

01 Python基础 - 包管理器

Python 基础 - 包管理器

pip

在 Python 中,安装第三方模块,是通过包管理工具 pip 完成的。

  • Mac 和 Linux 自带 pip 工具
  • Windows 需要安装 pip

设置镜像源

pip install pip-setting

输入 pip-setting, 选择阿里源

清华源:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple +模块名

安装三方库

pip install xxx

Python 虚拟环境是什么?

Python 虚拟环境 (Virtual Environment) 就是为每个项目创建一个独立的一套完整的工具(Python 解释器和包安装工具)。

虚拟环境解决了什么核心问题?

  1. 依赖隔离 (Dependency Isolation):这是最核心的问题。它防止了不同项目之间因依赖库的版本不同而产生的冲突。
  2. 环境复现 (Reproducible Environments):你可以将项目所用的所有库及其精确版本号记录在一个文件里(通常是 requirements.txt)。当你的同事或者部署服务器需要运行这个项目时,他们可以根据这个 “ 书单 “ 在自己的虚拟环境中快速、准确地创建出一个一模一样的环境,确保代码在任何地方都能以同样的方式运行。
  3. 保持全局环境整洁 (Clean Global Environment):避免将所有包都安装到系统级的 Python 环境中。这不仅容易造成混乱和冲突,还可能影响到操作系统依赖的 Python 工具。虚拟环境让你的全局环境保持最小和最干净的状态。
  4. 权限问题:在某些系统中,你可能没有权限向全局 Python 环境中安装包。虚拟环境创建在你的用户目录下,你拥有完全的读写权限。

uv

uv 是什么?

知名工具 Ruff 的开发者 Astral 公司打造的一款极其快速的 Python 包和项目管理器。它旨在成为 pip, pip-tools, virtualenv 等传统工具的现代化、高性能替代品。

uv 是一个用 Rust 编写的命令行工具,它的出现旨在解决 Python 开发中长期存在的依赖管理和虚拟环境创建速度慢的问题。

uv 主要特点和优势

  • ⚡️ 惊人的速度uv 的核心优势是其无与伦比的速度。无论是在安装、更新还是解析依赖时,uv 的速度通常比 pip 快 10 到 100 倍。这主要得益于其底层的 Rust 实现以及先进的依赖解析算法和高效的缓存机制。

  • 一体化工具链uv 整合了多个传统工具的功能于一身,您可以只用一个 uv 命令就完成:
    • 包管理 (pip 的替代品): uv pip install <package>
    • 虚拟环境管理 (venv/virtualenv 的替代品): uv venv
    • 依赖锁定 (pip-tools 的替代品): uv pip compile
  • 即插即用uv 被设计为 pippip-tools 的直接替代品,它兼容 requirements.txt 文件,使得在现有项目中迁移和使用变得非常简单。

  • Rust 驱动的性能和可靠性:由于使用 Rust 语言编写,uv 不仅速度快,还保证了内存安全和高并发处理能力。

  • 跨平台支持uv 完美支持 Windows, MacOS, 和 Linux。

安装 uv

  • pip
1
pip install uv
  • 脚本 (推荐,无需预装 Python)
1
2
3
4
5
# Mac/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

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

uv 使用

创建虚拟环境

速度远超 python -m venv

1
uv venv

这会在当前目录下创建一个名为 .venv 的虚拟环境。

激活虚拟环境 (与标准方式相同)

1
2
3
4
5
# Mac/Linux
source .venv/bin/activate

# Windows
.venv\Scripts\activate

安装包

1
uv pip install requests "fastapi[all]"

从 requirements.txt 安装依赖

1
uv pip install -r requirements.txt

生成 requirements.lock 文件 (锁定依赖版本)

1
uv pip compile requirements.in -o requirements.lock

uv 和 pip 区别

特性 / 方面pip (及其生态工具)uv
核心定位分散的工具集 (专注于一件事)一体化的解决方案 (All-in-One)
主要功能包安装器。需配合 venv 创建环境,pip-tools 锁定依赖。集包安装、虚拟环境管理、依赖锁定于一身的综合工具。
性能速度标准。纯 Python 实现,在解析复杂依赖时可能较慢。极快 (通常快 10-100 倍)。由 Rust 编写,为性能和并行而生。
虚拟环境管理外部依赖。使用 python -m venv 命令创建,速度一般。内置且高速。使用 uv venv 命令,创建速度远超原生 venv
依赖锁定外部依赖。需要 pip-tools (pip-compile) 等额外工具。内置功能。提供 uv pip compile 命令,速度极快。
缓存机制有包缓存,但设计较为传统。更现代、高效的全局缓存,能更好地跨项目共享。
底层实现语言PythonRust
开发者/来源PyPA (Python 官方打包机构) / 社区驱动Astral (知名工具 Ruff 的开发者)
兼容性作为行业标准,是所有工具兼容的基础。直接替代品。完全兼容 requirements.txtpip 的生态。
典型工作流1. python -m venv .venv
2. activate
3. pip install …
1. uv venv
2. activate
3. uv pip install …
简而言之可靠、标准的 “ 工具箱 “,包含多个独立的经典工具。一个高速、现代的 “ 多功能电动工具 “,集成了所有常用功能。

uv 和 pip 在虚拟环境区别:

  • pip 的工作流 (分散式):
    1. python -m venv .venv (使用一个工具创建环境)
    2. source .venv/bin/activate (激活环境)
    3. pip install requests (使用另一个工具安装包)
  • uv 的工作流 (集成式):
    1. uv venv (使用 uv 创建环境)
    2. source .venv/bin/activate (激活环境,此步骤仍是标准操作)
    3. uv pip install requests (使用 uv 安装包)
本文由作者按照 CC BY 4.0 进行授权