11款常用的Python虚拟环境创建管理软件推荐

Python学研大本营 2024-07-20 20:09:36编程技术
1051

在现代软件开发中,Python因其简洁、高效和强大的库支持而广受欢迎。然而,随着项目的增多和依赖关系的复杂化,管理不同的Python环境成为了一项挑战。虚拟环境(Virtual Environment)技术应运而生,帮助开发者隔离项目依赖,确保每个项目都能在独立的环境中运行,避免了包版本冲突等问题。本文将介绍11款常用的Python虚拟环境创建与管理软件,帮助读者找到最适合自己的工具。

Python.png

1. venv

venv 是 Python 内置标准库中创建轻量级虚拟环境的工具。

venv 的功能简单,无需单独安装,但如果你需要更好用的虚拟环境管理器,请继续往下看。

venv.jpg

venv

2. virtualenv

virtualenv 是用于创建 Python 虚拟环境的工具。虽然自 Python 3.3 起,virtualenv 的部分功能已经整合到 venv 模块中,但 virtualenv 仍然保留了其特有的优势。

相较于 venv,virtualenv 创建虚拟环境的速度更快。

此外,virtualenv 提供了更多的扩展和选项,能够灵活地创建多种 Python 版本的虚拟环境,并且可以通过 pip 快速升级。

virtualenv.jpg

virtualenv

3. Pipenv

Pipenv 弥合了 pip、python 和 virtualenv 之间的差距。

使用 Pipfile 和 Pipfile.lock 文件,Pipenv 可以指定 Python 的版本和支持库,并与 pyenv 进行交互操作,生成构建项目锁文件。

Pipenv 自动为项目创建虚拟环境,在安装、卸载支持库时根据需要更新 Pipfile。

Pipenv 的目标是为开发者提供一致的开发环境,不再需要分别使用 pip 和 virtualenv。

Pipenv.webp

Pipenv

4. pyenv

Pyenv 让开发者可以在多个 Python 版本之间轻松切换,解决了 venv 不能创建不同 Python 版本虚拟环境的限制。

Pyenv 支持在不同项目中切换 Python 版本。

但是,开发者有时会滥用 pyenv 设置全局的 Python 版本,导致项目之间的 Python 版本混乱,影响项目的复用和开发环境的稳定。

Pyenv 的理念很简单,秉承了 UNIX 哲学中单一用途工具的传统,它源自于 rbenv 和 ruby-build,并专门为 Python 进行了修改和适配。

与同类工具不同,pyenv 完全由纯 Shell 脚本实现,不依赖 Python,无需担心 Python 引导问题。

Pyenv 通过修改操作系统的 PATH 环境变量,可不同 Python 版本之间切换,并能同时运行多个 Python 版本的命令,在不同 Python 环境下进行测试和开发时特别实用。

pyenv 主要用于切换 Python 版本,并不直接管理虚拟环境。不过,可以结合 pyenv 与 virtualenv 命令,或使用 pyenv-virtualenv 插件管理虚拟环境。

pyenv 目前已经成为 Python 开发者创建虚拟环境的首选工具之一。

pyenv.webp

pyenv

5. Conda

Conda 是由 Anaconda 出品的命令行工具,用于在 Windows、macOS 和 Linux 上管理虚拟环境。

它不仅能管理 Python 支持库,还能处理非 Python 支持库,尤其针对数据科学方面的开发进行了优化。

Conda使用自己的 Conda 虚拟环境切换非 Python 依赖项,无需使用复杂的 Docker。

与 Poetry 类似,Conda 在构建环境时执行完整的支持库解析,其支持库解析器 libmamba 是用 C++ 实现的,速度更快。

Conda 受到了数据科学开发人员的欢迎,但其用户体验仍有改进空间。

尽管如此,Conda 仍是 Python 生态系统中使用最广泛的工具之一,尤其是在与 Ray 和 Metaflow 等第三方工具集成时。

Conda.webp

conda

6. Poetry

Poetry 支持安装和更新支持库,提供锁文件以确保项目的复用,并能构建项目分发包。

Poetry 需要 Python 3.8+,跨平台支持 Linux、macOS 和 Windows。

Poetry 类似于 Cargo(Rust 的包管理器) 和 npm(Node.js 的包管理器),是 Python 生态系统中使用体验与这两个包最接近的工具。

类似于 Conda,Poetry 预先解析完整的依赖图,并按拓扑顺序安装支持库。

Poetry 依据 pyproject.toml 管理项目内外的虚拟环境。

poetry.lock 文件可以确保项目的复用,但体积较大。

此外,Poetry 还兼具构建工具功能,可以发布 Python 包。

Poetry 的解析速度较慢,部分是因为 Python 包声明支持库的方式不一致,可能会导致支持库解析的时间较长。

Poetry.webp

Poetry

7. PDM

PDM 的目标是成为新生代 Python 支持库管理工具。

与 Poetry 类似,PDM 也是一款快速的支持库解析器,主要用于大型二进制文件分发。

它具备灵活强大的插件系统和多功能用户脚本。

此外,PDM 还可以使用 indygreg 的 python-build-standalone 安装 Python,并支持类似 pnpm 的集中式安装缓存。

PDM 与 Poetry 的主要区别在于,PDM 支持 PEP-582,将虚拟环境集成到项目目录中,避免了传统虚拟环境的手动激活和停用,提高了开发效率。

PDM.webp

PDM

8. Huak

Huak 是使用 Rust 开发的 Python 包管理器。

JavaScript 社区目前已经出现了向 Rust 转型的趋势,Huak 也希望将 Rust 引入 Python 生态系统。

Rust 生态系统上手体验很出色,Cargo 起了很大的作用。

Huak 希望为 Python 提供相同的体验,它的目标是要达到极致速度。

Huak 的理念是改善开发者体验,使其在开发 Python 项目时享受与 Cargo 类似的流畅感。

虽然目前 Huak 仍处于实验阶段,但其未来潜力巨大,值得关注。

Huak.webp

Huak

9. Pixi

Pixi 是基于 Rust 的 rattler 库开发的,具有显著的性能和安全优势。

它的理念是提供类似于 cargo 或 yarn 的开发体验。

Pixi 目标是直接取代 Conda,并能像 Conda 一样管理非 Python 依赖项。

2024 年 2 月,为了追求更快的速度,Pixi 将后台的 rip 改为 uv。

与 Conda 和 mamba 不同,Pixi 提供了自定义类型的锁文件,使其在复用方面领先于 Conda。

Pixi 支持可复用的方式安装支持库,并支持 Python、C++ 和 R 等多种语言, 且兼容所有主流操作系统。

Pixi 还提供了简洁而强大的命令行界面,使得支持库管理更加简单、高效。

Pixi.webp

Pixi

10. Rye

Rye 由 Astral.sh 开发,也是基于 Rust 构建的,旨在提升开发效率和用户体验。

与传统的包管理工具相比,Rye 的性能有显著提升,功能也更加丰富。

Rye 希望为 Python 开发者提供一站式的工具,让 Python 支持库的安装与管理更加轻松。

Rye 使用与 uv 相同的支持库解析器,提供更快的管理体验。

Rye 还提供了与 poetry 类似的功能,但速度更快。

Rye.webp

Rye

11. uv

uv 也是 Astral.sh 出品的 Python 虚拟环境管理器,是当前备受期待的新生代包管理工具。

uv 的目标是取代 pip,同时具备与 Cargo 类似的功能。

uv 支持 Python 打包工具的所有特性,包括可编辑安装、Git 依赖、URL 依赖、本地依赖、约束文件和源码分发等。

Astral.sh 还开发了 Rust 生态中备受开发者喜爱的ruff(用 Rust 开发的高性能 Python 代码检查和代码格式化工具)。

与 poetry 类似,uv 通过pyproject.toml管理项目,得益于 Rust 的高效算法,其解析速度至少比 poetry 快一个量级。

目前,uv 还没有推出稳定版,但其性能测试结果让人期待。

uv.jpg

uv

uv 与主流虚拟环境管理器的性能测试对比

uv 在性能方面表现优异,相较于 pip 和 pip-tools,在没有缓存时快 8~10 倍,在有缓存时快 80~115 倍。

uv 创建虚拟环境的速度比 venv 快 80 倍,比 virtualenv 快 7 倍,并且不依赖于 Python。

总之,uv 作为高效且兼容性强的包管理工具,有望取代 poetry 等工具。

随着 uv 功能的不断增强,将来可能会与 Rye 进行合并。

uv.webp

uv

总结

通过本文的介绍,我们了解了11款常用的Python虚拟环境管理工具,包括其特点和使用场景。这些工具各有优势,从简单的命令行工具到功能丰富的集成开发环境,满足了不同开发者的需求。无论是初学者还是经验丰富的开发人员,都可以从中选择合适的工具来提高工作效率。虚拟环境的使用不仅是项目管理的最佳实践,更是保证代码质量和项目稳定性的关键。希望本文能为您的Python开发之旅提供有价值的参考。

Python 虚拟环境
THE END
ZhanShen
把烦恼扔进夕阳里,和星星一起沉沦。

相关推荐

Python yield 用法大全:轻松掌握生成器与迭代器设计
在Python中,yield关键字是构建生成器的核心工具,它通过状态保存机制实现了高效的内存管理和惰性计算。与传统的迭代器实现相比,yield能将迭代器设计从复杂的类定义简化为直...
2025-09-15 编程技术
576

基于Python的旅游数据分析可视化系统【2026最新】
本研究成功开发了基于Python+Django+Vue+MySQL的旅游数据分析可视化系统,实现了从数据采集到可视化展示的全流程管理。系统采用前后端分离架构,前端通过Vue框架构建响应式界...
2025-09-13 编程技术
600

手把手教你用Python读取txt文件:从基础到实战的完整教程
Python作为数据处理的利器,文件读写是其基础核心功能。掌握txt文件读取不仅能处理日志、配置文件等常见场景,更是理解Python文件I/O的基石。本文ZHANID工具网将从基础语法到...
2025-09-12 编程技术
578

Python Flask 入门指南:从零开始搭建你的第一个 Web 应用
Flask作为 Python 中最轻量级且灵活的 Web 框架之一,特别适合初学者快速上手 Web 应用开发。本文将带你一步步了解如何在本地环境中安装 Flask、创建一个简单的 Web 应用,并...
2025-09-11 编程技术
552

Python 如何调用 MediaPipe?详细安装与使用指南
MediaPipe 是 Google 开发的跨平台机器学习框架,支持实时处理视觉、音频和文本数据。本文脚本之家将系统讲解 Python 环境下 MediaPipe 的安装、配置及核心功能调用方法,涵盖...
2025-09-10 编程技术
594

基于Python开发一个利率计算器的思路及示例代码
利率计算是金融领域的基础需求,涵盖贷款利息、存款收益、投资回报等场景。传统计算依赖手工公式或Excel表格,存在效率低、易出错等问题。Python凭借其简洁的语法和强大的数学...
2025-09-09 编程技术
535