系统梳理Python中的虚拟环境工具

 更新时间:2026年05月28日 08:38:46   作者:曾阿伦  
在 Python 开发中,多 Python 版本切换、项目依赖隔离、版本一致性复刻是日常开发刚需,本文将为大家系统梳理一下,希望对大家有一定的帮助

前言

在 Python 开发中,多 Python 版本切换项目依赖隔离版本一致性复刻是日常开发刚需。如果不做环境隔离,不同项目的第三方包版本极易冲突,甚至破坏系统全局 Python 环境。

一、Python 版本管理工具

核心作用:同一机器安装多个 Python 版本,自由切换全局 / 项目默认 Python 解释器

1. pyenv

  • 定位:轻量无依赖的 Python 版本管理工具,专注多版本安装与切换。
  • 生态:与 pyenv-virtualenv 同属一个项目生态,完美联动虚拟环境。
  • 适配:Linux / Mac 原生支持;Windows 推荐使用 pyenv-win 分支。
  • 开源地址:https://github.com/pyenv/pyenv

2. alternatives

  • 适用场景:纯 Linux 环境(如 Ubuntu 18.04+)。
  • 特点:系统级工具,不仅能切换 Python,还可配置 Java、GCC 等任意软件默认版本,适合服务器多版本环境统一管理。

二、经典依赖管理工具

核心作用:管理第三方包版本,为每个项目创建隔离独立环境,项目依赖互不干扰。

1. virtualenv

定位:PyPA 官方出品的经典虚拟环境创建工具,隔离能力强大。

核心优势:

  • 兼容所有 Python 版本(含 Python2 项目);
  • 可指定任意 Python 解释器创建环境;
  • 功能比内置 venv 更全面,支持重定位、引导脚本生成等高级能力;
  • 可通过 pip 直接升级,跨版本统一兼容。

不足:需手动安装,无内置依赖锁定能力。

2. venv(pyvenv)

定位:Python3.3 内置标准库,无需额外安装,轻量化首选。

版本迭代:

  • Python3.3~3.4:推荐 pyvenv 命令创建;
  • Python3.5+:统一使用 venv;
  • Python3.6 起:pyvenv 正式被弃用。

局限性: virtualenv,无法跨版本创建环境、不支持环境重定位、缺少高级脚本能力,仅适合简单小型项目。

官方文档:https://docs.python.org/zh-cn/3/library/venv.html

3. pyenv-virtualenv

  • 定位:pyenv 专属插件,无缝结合Python 版本管理 + 虚拟环境管理
  • 优势:可基于 pyenv 已安装的任意 Python 版本,一键创建隔离虚拟环境,全程命令统一,适合多版本多项目开发。
  • 开源地址:https://github.com/pyenv/pyenv-virtualenv

4. pipenv

  • 诞生背景:2017 年发布,由 PyPA 维护,pip + virtualenv 合体工具
  • 核心特性:自动创建虚拟环境、用 Pipfile/Pipfile.lock 替代传统 requirements.txt,自动锁定依赖版本。
  • 槽点:依赖解析偶发 Bug、维护活跃度下降、大型项目解析速度慢,业内普遍建议谨慎使用。

5. pipx

定位:专为Python 命令行工具设计,在独立虚拟环境中安装全局可执行工具。

优势:隔离安装 CLI 工具(如 poetry、httpie),不污染全局 Python 环境,随装随用。

安装使用:

pip install pipx

6. poetry

  • 定位:现代化全能依赖管理 + 项目打包工具,优于 pip、pipenv。
  • 核心能力:精准依赖版本解析、pyproject.toml 统一管理项目配置、内置打包 / 发布功能,符合 PEP 规范。
  • 搭配建议:常与 pipx 结合使用,全局隔离安装 poetry:
pipx install poetry
poetry about

三、uv 新生代极速依赖管理

1. uv 简介

uv 是由 Astral 团队基于 Rust 开发的新一代 Python 包与项目管理工具,堪称 Python 环境管理的「革命性工具」,一个工具可替代 pip、virtualenv、pyenv、poetry、pipx 等多款传统工具

2. 核心亮点

极速性能:依赖解析、包安装速度比传统 pip 快 10~100 倍,大幅缩短项目初始化、CI/CD 构建耗时;

全功能集成:内置 Python 版本管理、虚拟环境创建、依赖锁定、项目初始化、脚本运行、工具安装;

兼容原有工作流:提供 pip 兼容命令,无需改变使用习惯,无缝迁移;

全局缓存去重:统一依赖缓存,节省磁盘空间,多项目复用相同包;

跨平台支持:完美适配 Windows、macOS、Linux,无需依赖 Python 环境即可安装;

可靠版本锁定:通过 uv.lock 文件实现跨环境、跨机器依赖版本完全复刻。

3. 基础安装与常用命令

安装 uv

# Linux/Mac
curl -LsSf https://astral.sh/uv/install.sh | sh
# 也可通过 pip 安装
pip install uv

常用核心命令

# 创建虚拟环境
uv venv .venv

# 安装依赖(兼容 pip 用法)
uv pip install numpy pandas

# 初始化新项目
uv init my_project

# 运行项目脚本
uv run main.py

4. 适用场景

追求极致安装 / 解析速度的中大型项目;

需要统一管理 Python 版本、虚拟环境、依赖的团队项目;

CI/CD 流水线优化,大幅提升构建效率;

替代传统复杂工具链,简化开发环境配置。

四、主流工具选型总结

工具核心能力适用场景
pyenvPython 多版本管理本地多版本开发、服务器环境版本切换
venv内置轻量虚拟环境小型简单项目、不想额外安装工具
virtualenv全能虚拟环境Python2 老项目、需要高级环境能力
pipenv一体化依赖 + 环境小型项目快速开发,不推荐大型项目
pipxCLI 工具隔离安装全局 Python 命令行工具管理
poetry专业依赖 + 打包开源项目、模块化项目、需要发布包
uv极速全栈环境管理所有新项目首选,追求速度与简洁工作流

到此这篇关于系统梳理Python中的虚拟环境工具的文章就介绍到这了,更多相关Python虚拟环境工具内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python Windows最新版本安装教程

    python Windows最新版本安装教程

    这篇文章主要介绍了python Windows最新版本安装教程,是python的详细安装教程和环境变量的配置,需要的小伙伴可以参考一下,希望对你有所帮助
    2022-02-02
  • pandas 使用insert插入一列

    pandas 使用insert插入一列

    这篇文章主要介绍了pandas 使用insert插入一列的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python3+Pycharm+PyQt5环境搭建步骤图文详解

    Python3+Pycharm+PyQt5环境搭建步骤图文详解

    这篇文章主要介绍了Python3+Pycharm+PyQt5环境搭建步骤图文详解,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • 使用Python pip怎么升级pip

    使用Python pip怎么升级pip

    这篇文章主要介绍了使用Python pip怎么升级pip,本文给大家分享方法和实现步骤对python pip升级pip相关知识感兴趣的朋友跟随小编一起看看吧
    2020-08-08
  • python 基础学习第二弹 类属性和实例属性

    python 基础学习第二弹 类属性和实例属性

    本人c程序员,最近开始学python,深深的被python的强大所吸引,今后也会把学到的点点滴滴记录下来,现在分享一下关于类属性和实例属性的一些问题,很基础的东西
    2012-08-08
  • python变量作用域与列表入门详解

    python变量作用域与列表入门详解

    这篇文章主要给大家介绍了关于python变量作用域与列表的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)

    Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)

    这篇文章主要介绍了Python matplotlib绘制图形实例(包括点,曲线,注释和箭头),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • pandas 对group进行聚合的例子

    pandas 对group进行聚合的例子

    今天小编就为大家分享一篇pandas 对group进行聚合的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python实现判断字符串中包含某个字符的判断函数示例

    Python实现判断字符串中包含某个字符的判断函数示例

    这篇文章主要介绍了Python实现判断字符串中包含某个字符的判断函数,涉及Python自定义函数中使用find方法针对字符串的简单判断查找相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • 教你用python从日期中获取年、月、日和星期等30种信息

    教你用python从日期中获取年、月、日和星期等30种信息

    在日常的工作,经常需要获取时间等相关信息,下面这篇文章主要给大家介绍了关于如何用python从日期中获取年、月、日和星期等30种信息的相关资料,需要的朋友可以参考下
    2022-07-07

最新评论