# 什么是 Python 虚拟环境

**URL:** <https://www.isharkfly.com/t/python/16306>\
**Category:** Python\
**Tags:** python\
**Created:** [September 18, 2024, 3:03am UTC](https://www.isharkfly.com/t/python/16306 "2024-09-18T03:03:05Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [September 18, 2024, 3:03am UTC](https://www.isharkfly.com/t/python/16306/1 "2024-09-18T03:03:05Z")

</div>

当用 Python 开发软件时，一个基本的方法是在你的机器上安装 Python，通过终端安装所有需要的库，在一个 .py 文件或笔记本中编写所有的代码，并在终端运行你的 Python 程序。

这是很多初学者和很多从使用 Python 进行数据分析过渡的人的常用方法。

这对于简单的 Python 脚本项目来说效果很好。但是在复杂的软件开发项目中，比如构建一个 Python 库、一个 API 或者软件开发工具包，往往你要处理多个文件、多个包和依赖关系。因此，你将需要为该特定项目隔离你的 Python 开发环境。

考虑这种情况：你正在开发应用程序 A，使用你的系统安装的 Python 和你 pip install 安装的 packageX 1.0 版本到全局 Python 库。然后你切换到本地机器上的项目 B，并安装了相同的 packageX，但版本为 2.0，在 1.0 和 2.0 之间有一些突破性的变化。

当你回去运行你的项目 A 时，你遇到了各种各样的错误，而且你的项目不能运行。这是你在用 Python 构建软件时可能遇到的情况。而为了解决这个问题，我们可以使用虚拟环境。

## 什么是虚拟环境

根据 Python 官方文档，

> “虚拟环境是一个 Python 环境，这样安装在其中的 Python 解释器、库和脚本就与安装在其它虚拟环境中的、以及（默认）安装在“系统” Python（也就是作为操作系统的一部分安装的库）中的任何库隔离。

当你为你的项目激活一个虚拟环境时，你的项目就变成了它自己的独立应用，独立于系统安装的 Python 及其模块。

你的新的虚拟环境有自己的 pip 来安装库，有自己的库文件夹，新的库被添加到这里，还有自己的 Python 解释器，用于激活环境的 Python 版本。

有了这个新环境，你的应用程序变得自成一体，你会感受到一些好处，比如：

- 你的开发环境包含在你的项目中，并且不干扰你的系统安装的 Python 或其他虚拟环境
- 你可以为多个 Python 版本创建一个新的虚拟环境
- 你能够下载软件包到你的项目中，而不需要管理员的权限
- 你可以很容易地将你的应用程序打包，并与其他开发者分享，进行复制
- 你可以很容易地在一个文件中为你的项目创建一个依赖和子依赖的列表，这使得其他开发者可以很容易地复制和安装你的环境中使用的所有依赖项

一般由一个 Python 脚本发展而来的软件开发项目可以使用虚拟环境。Python 提供了多种创建和使用虚拟环境的方法。

## 结论

虚拟环境在 Python 的项目中是必要的，主要目的是在项目中实现环境隔离。

如果没有虚拟环境，那么你计算机中的所有项目将会使用安装在计算机中的 Python 环境。

如果你的计算机中只有一个 Python 项目的话，这也无所谓，反正配置的 Python 环境只给这个项目使用。

但，如果你的计算机中有很多个不同的 Python 项目的话，那么共用一个环境很容易就会出现编译器和包的冲突问题。

 ![1_cAx4hY_TEGjbGN_ZcO9UKQ](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/2X/1/14917be54526e42a761d6584842f4b2a4c65b1dc.png)

因此我们可以通过虚拟环境为项目配置一个项目自己用的环境。
