python 版本管理
为什么需要版本管理
不同项目依赖不同 Python 版本(如 3.7 与 3.11)
第三方库版本冲突(如 Django 2.2 vs Django 4.2)
团队协作需要一致的环境
常用 Python 版本管理工具
pyenv(多版本切换首选)
适用于 macOS/Linux(Windows 用 pyenv-win)
核心功能:安装、切换多个 Python 版本
常用命令
查看可安装版本:
pyenv install --list安装版本:
pyenv install 3.11.4查看已安装版本:
pyenv versions设置全局版本:
pyenv global 3.11.4设置项目版本:
pyenv local 3.9.7
venv / virtualenv(轻量虚拟环境)
适合一般项目隔离依赖
创建环境:
python3.x -m venv myenv激活环境:
source myenv/bin/activate
Docker(企业级部署)
通过容器实现完全隔离的可复现环境
工具选择建议
场景 | 推荐工具 |
|---|---|
多版本切换 | pyenv |
数据科学 | conda |
普通项目隔离 | venv / virtualenv |
现代依赖管理 | pipenv / poetry |
生产部署 | Docker |
conda(数据科学场景最佳)
同时管理 Python 版本与依赖包
创建环境:
conda create --name my_env python=3.x激活环境:
conda activate my_env
概述:conda 是一个 跨语言的包管理和环境管理工具,最初由 Anaconda 开发,主要用于 Python 和 R 生态系统。
特点及优势
支持 Python 及非 Python 依赖(如
numpy依赖的MKL、C/C++ 库等)支持虚拟环境管理(
conda create创建独立环境)解决依赖冲突能力强,使用
solver解析依赖可在 Python 之外安装其他工具(如
gcc、cmake)支持 Windows、Linux、Mac(包括 Apple Silicon)
适用场景
适用于 数据科学、机器学习(如
tensorflow、pytorch)需要管理 Python 之外的库(如
CUDA、MKL)需要在 Windows 上使用科学计算库(很多 Python 库的二进制包仅在
conda可用)
uv
概述:uv 超快的 Python 包管理工具,主要用于 Python 生态,类似于 pip 和 poetry速度更快
特点及优势
安装速度快(比
pip和conda更快)直接替代
pip(支持requirements.txt和pyproject.toml)无需虚拟环境,但可以与
venv配合使用专注于 Python 依赖管理(不支持非 Python 依赖)
高效的依赖解析(基于
rust实现的解析器)适用于 CI/CD 和 Python 开发
适用场景
需要 快速安装 Python 依赖(如 Web 开发、Python 脚本)
适用于 Python-only 项目(如 Django、FastAPI)
适合 开发者和 CI/CD 环境(提升安装速度)
对比总结
对比项 | Conda | uv |
|---|---|---|
主要用途 | 包管理 + 环境管理 | 仅 Python 包管理 |
是否支持 Python 以外的依赖 | ✅ 是 | ❌ 否 |
虚拟环境支持 | ✅ 内置环境管理 | ❌ 需 venv 或 virtualenv |
安装速度 | ⚡ 中等 | 非常快 |
依赖解析能力 | ✅ 强(适用于复杂环境) | ✅ 快(但仅限 Python 生态) |
适用场景 | 数据科学、ML、科学计算 | Web 开发、CI/CD、Python-only 项目 |
选择
做数据科学、机器学习、深度学习,或者需要安装 Python 之外的依赖(如
CUDA)选conda只管理 Python 依赖(如 Web 开发、CI/CD)且希望安装速度更快 选
uv
上一篇: Python PyQt 信号与槽机制
