1. 虚拟环境基础

Python 应用程序通常会使用不在标准库内的软件包和模块。应用程序有时需要特定版本的库 , 因为应用程序可能需要修复特定的错误 , 或者可以使用库的过时版本的接口编写应用程序。

这意味着一个 Python 环境可能无法满足每个应用程序的要求。如果应用程序 A 需要特定模块的 1.0 版本 , 但应用程序 B 需要 2.0 版本 , 则需求存在冲突 , 安装版本 1.02.0 将导致某一个应用程序无法运行。

这个问题的解决方案是创建一个 virtual environment , 一个目录树 , 其中安装有特定Python版本 , 以及许多其他包。

然后 , 不同的应用将可以使用不同的虚拟环境。 要解决先前面例子中的冲突 , 应用程序 A 可以拥有自己的安装了 1.0 版本的虚拟环境 , 而应用程序 B 则拥有安装了 2.0 版本的另一个虚拟环境。 如果应用程序 B 要求将某个库升级到 3.0 版本 , 也不会影响应用程序 A 的环境。

比如在同一个Python环境下运行三个项目 , 这三个项目都用到了pymysql三方库 , 但是需要的版本都不一样 , 运行项目就得下载指定版本的pymysql , 运行另一个项目时就得把之前的版本卸载再安装新的适配版本 , 这还只是一个三方库 , 如果涉及到多个不同版本的三方库 , 管理和维护就很麻烦 , 也容易出错。还有一种情况就是在同一个环境下同时运行这三个项目 , 管理就更复杂了。

1678563053308541

1678563452231948

这时 , Python虚拟环境应运而生 : 根据Python的安装目录虚拟出三个独立的、虚拟的Python运行环境 , 简称虚拟环境。每个虚拟环境都有一个独立的Python解释器 , 都有一套独立的Python标准库、独立的工具和独立的第三方库。三个虚拟环境分别对应三个项目 , 每个项目所使用的所有第三方库都安装在各自的虚拟环境中。Python的安装目录和各个虚拟环境之间相互独立 , 互不影响 , 从而有效解决了第三方库版本冲突的问题。

1678563506402869

总结来说 , 虚拟环境主要有如下作用 :

  1. 解决第三方库的版本冲突、管理混乱的问题

  1. 开方环境相互独立 , 便于部署、升级、维护等

2. 虚拟环境管理工具

常见的虚拟环境管理工具如下 :

  • venv : Python 标准库中的虚拟环境管理工具

  • conda : Anaconda 下的管理工具

  • Virtualenv : 第三方的虚拟环境管理工具,在 Pypa 中维护

  • Pipenv : 第三方的虚拟环境管理工具,在 Pypa 中维护

  • poetry : 第三方的虚拟环境管理工具


参考链接

Python虚拟环境概述及常见管理工具介绍 | CHEGVA


熊熊