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 解释器和包安装工具)。
虚拟环境解决了什么核心问题?
- 依赖隔离 (Dependency Isolation):这是最核心的问题。它防止了不同项目之间因依赖库的版本不同而产生的冲突。
- 环境复现 (Reproducible Environments):你可以将项目所用的所有库及其精确版本号记录在一个文件里(通常是
requirements.txt
)。当你的同事或者部署服务器需要运行这个项目时,他们可以根据这个 “ 书单 “ 在自己的虚拟环境中快速、准确地创建出一个一模一样的环境,确保代码在任何地方都能以同样的方式运行。 - 保持全局环境整洁 (Clean Global Environment):避免将所有包都安装到系统级的 Python 环境中。这不仅容易造成混乱和冲突,还可能影响到操作系统依赖的 Python 工具。虚拟环境让你的全局环境保持最小和最干净的状态。
- 权限问题:在某些系统中,你可能没有权限向全局 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
被设计为pip
和pip-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 命令,速度极快。 |
缓存机制 | 有包缓存,但设计较为传统。 | 更现代、高效的全局缓存,能更好地跨项目共享。 |
底层实现语言 | Python | Rust |
开发者/来源 | PyPA (Python 官方打包机构) / 社区驱动 | Astral (知名工具 Ruff 的开发者) |
兼容性 | 作为行业标准,是所有工具兼容的基础。 | 直接替代品。完全兼容 requirements.txt 等 pip 的生态。 |
典型工作流 | 1. python -m venv .venv 2. activate 3. pip install … | 1. uv venv 2. activate 3. uv pip install … |
简而言之 | 可靠、标准的 “ 工具箱 “,包含多个独立的经典工具。 | 一个高速、现代的 “ 多功能电动工具 “,集成了所有常用功能。 |
uv 和 pip 在虚拟环境区别:
pip
的工作流 (分散式):python -m venv .venv
(使用一个工具创建环境)source .venv/bin/activate
(激活环境)pip install requests
(使用另一个工具安装包)
uv
的工作流 (集成式):uv venv
(使用 uv 创建环境)source .venv/bin/activate
(激活环境,此步骤仍是标准操作)uv pip install requests
(使用 uv 安装包)
本文由作者按照 CC BY 4.0 进行授权