浏览python相关项目时经常会遇到要求创建虚拟环境以运行项目的要求,对python虚拟环境这一概念一直没有深入了解,今天决定花点精力终结这个知识点的懵懂。

what——python虚拟环境是什么?

Python 虚拟环境(Virtual Environment)是一个独立的 Python 环境,用于隔离不同项目之间的依赖关系。虚拟环境可以帮助开发者在一个项目中使用特定的 Python 版本和第三方库,而不会影响到其他项目或系统级别的 Python 环境。

在 Python 虚拟环境中,你可以单独安装和管理项目所需的库和版本,从而避免了在不同项目之间共享全局库带来的依赖冲突和版本不一致问题。虚拟环境的使用有助于提高项目之间的独立性,使开发者能够更加专注于业务功能的开发。

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

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

why–为什么要使用虚拟环境

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

这是很多初学者和很多从使用 Python 进行数据分析过渡的人的常用方法,这对于简单的 Python 脚本项目来说效果很好。但是在复杂的软件开发项目中,比如同时使用多个有着复杂依赖(有时对某些依赖包的版本要求是矛盾的)的项目时,往往你要处理多个文件、多个包和依赖关系。因此,你将需要为某些项目隔离你的 Python 开发环境(事实上,在有了一些编程和工程经历之后,我推荐为每一个项目配置独立的虚拟环境)。

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

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

使用虚拟环境,你的应用程序变得自成一体,这是使用它的一些优势:

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

how——如何使用虚拟环境

Python 提供了多种创建和使用虚拟环境的方法,这篇文章只着重介绍conda方法,venv等其他方法见引用部分。

conda

Conda 是一个开源的软件包管理系统和环境管理系统,主要用于 Python 编程语言的生态系统。Conda 由 Anaconda, Inc.公司开发和维护,其核心功能是帮助用户方便地安装、运行和管理不同版本的软件包和依赖关系。

安装conda

Anaconda 3 介紹及安裝教學 (2023更新版) - SimpleLearn

虚拟环境

查看目前系统已存在的虚拟环境

conda env list

创建虚拟环境

env_name是要创建的环境的名字

python=3.8是创建环境的python版本,为可选项,默认似乎为3.8.10

conda create -n env_name python=3.8

管理虚拟环境

启动虚拟环境

windows:
activate env_name

linux/mac:
source activate env_name
or
conda activate env_name

关闭虚拟环境

windows:
deactivate

linux/mac:
source deactivate
or
conda deactivate
or
bash(linux)

删除虚拟环境

删除环境中的某个依赖包:
conda remove --name env_name pkg_name
删除某个虚拟环境:
conda env remove --name env_name

virtualenv

venv

pipenv

引用

如何在 Python 中创建一个虚拟环境,以及为什么需要它 (freecodecamp.org)

用conda建立及管理python虛擬環境 - Python4U - Medium

最全的Python虚拟环境使用方法 - 知乎 (zhihu.com)

一文解读 virtualenv & venv & pipenv 之间的联系与区别-CSDN博客