python中的虚拟环境
⛳目录
- 认识虚拟环境
- Python中的虚拟环境工具
🎈为什么需要虚拟环境?
- 辛辛苦苦写好一个项目,各种版本的第三方组件,凌乱的配置文件,在自己电脑上运行的十分流畅,想分享给同事使用,迁移过去之后,重建配置,各种跑不起来。
- 一些比较特殊的工具需要依托于不同的Python版本,就像 robotframework,仅仅支持Python 2.7和>= 3.6。
- 第三方库的管理,打包的时候避免有其他干扰的包。
- 等等…
🎈认识虚拟环境
- 本节课我们先要知道什么是虚拟环境。接下来再介绍一些Python中的虚拟环境工具。
- 在我们平时的工作中,可能存在一台电脑中拥有多个Python版本的情况。比如我们有一个Python2.7的版本。还有一个Python3.8的环境。他们两个都存在于我们当前的系统中。这就造成了一个问题。两个版本可能因为在同一个环境下造成使用的pip与Python的第三方包冲突的问题。 为了解决这个问题。我们在当前的。系统中专门创建了一个Python2.7的环境。这个环境中只有Python2.7的pip以及Python2.7的解释器。而Python3.8也可以创建属于一个自己的虚拟环境。这两个虚拟环境独立存在。并且可以做到互不冲突,互不影响。这就是虚拟环境的作用与目的。==我们只需要在各自的虚拟环境中,按照自己的需要的Python软件以及版本进行安装。这些软件与指定的版本也只针对于当前的虚拟环境。不会影响到其他的虚拟环境。==通过这里大家可以联想一下。我们使用pycharm的时候创建的每一个Python项目,他们都是各自的一个独立的虚拟环境,互相不会受到影响。
🎈Python中的虚拟环境工具
-
接下来让我们了解一下Python中都有哪些创建虚拟环境的软件。
-
Virtualenv
-
pyenv
-
第一个是virtualenv。它是非常常用的虚拟环境工具。不过它依赖于当前系统中都有哪些Python版本。比如我的电脑中有Python2.7和Python3.6。以及Python3.8的版本。那么virtualenv就只能在这三个版本中去创建虚拟环境。但是vitualenv使用简便。也是受到很多Python爱好者的追捧。第二个是pyenv。它和virtualenv一样,都是创建虚拟环境的工具。不过,pyenv并不依赖当前系统中都拥有哪些Python版本。也就是说,只要是Python拥有的版本,pyenv都可以在当前电脑中创建虚拟环境。它的做法就是先把我们希望创建的虚拟环境的Python版本安装到本地,然后再进行虚拟化操作,不过它的缺点是操作较为复杂,并且也是依赖于virtualenv。
甚至我们可以认为,pyenv最终还是需要通过virtualenv来进行虚拟环境的创建,由于pyenv操作相对复杂,所以我们本节课主要介绍virtualenv的使用方法。在日后对Python使用更加娴熟之后,再去关注pyenv可能会更加轻松,Virtualenv也是Python的第三方包。不过它和IPython一样,都是在命令行下去执行的
-
我们通过
pip install virtualenv
来下载并安装它。当安装完成之后,我们希望把虚拟环境创建在哪个目录下,就要提前进入到这个文件夹,这个也是选择创建虚拟环境的目录. -
接下来,输入
virtualenv -p python3 pyenv
回车程序将会在我们选择的目录下创建一个虚拟环境的文件夹。其实虚拟环境就是一个文件夹。接下来,我们通过调用./penv/bin/activate
来启动虚拟环境。Windows系统,可以直接进入到pv文件夹下的Scripts文件夹中,直接输入.\activate回车,就可以进入到虚拟环境 -
如果我们想退出虚拟环境。我们只需要直接输入deactivate,就可以将退出我们现在的虚拟环境。最后,请注意。我们进入的虚拟环境只是在当前我们打开的它们的终端有效。如果我们开启了多个terminal终端,而且需要每一个都在虚拟环境中,则需要对每个terminal终端都执行以上操作才可以。
虚拟环境的好处
-
虚拟环境(Virtual Environment)是 Python 中用于隔离项目依赖和开发环境的一种机制。它的作用如下:
-
项目隔离: 虚拟环境允许您在同一台计算机上创建多个独立的 Python 环境,每个环境都可以具有自己的包和依赖关系。这样可以避免不同项目之间的依赖冲突问题,确保每个项目都有独立、干净的开发环境。
-
依赖管理: 在虚拟环境中,您可以安装和管理项目所需的特定版本的 Python 包和依赖项。这使得您可以精确地控制每个项目所使用的包版本,避免由于包升级或变更而导致的兼容性问题。
-
可移植性: 虚拟环境使您的项目更具可移植性。您可以将项目的虚拟环境打包并与项目一起分发,以确保其他人在不同的计算机上能够轻松地重现和运行项目。
-
环境隔离: 虚拟环境提供了一种隔离的开发环境,您可以在其中安装和测试新的 Python 包和工具,而不会对系统的全局 Python 环境产生影响。这使得您可以更安全地尝试新的软件库或工具,而不会破坏您的系统环境。
-
-
总而言之,虚拟环境使得多个项目可以独立地开发和运行,避免了依赖冲突和环境污染问题,提供了更好的可移植性和灵活性。这是 Python 开发中非常有用的工具之一,推荐在项目中使用虚拟环境来管理依赖和环境。
-
虚拟环境和使用不同的解释器都是为了实现项目的隔离和依赖管理,确保每个项目都可以使用所需的特定版本的软件包,但虚拟环境提供了更方便和统一的方式来管理和切换不同的环境。
virtualenv
是一个用于创建独立 Python 环境的工具,它可以用来创建一个隔离的 Python 运行环境,以便在同一台机器上同时管理多个项目所需的不同依赖关系。
virtualenv
并不是一个包或模块,而是一个用于创建和管理独立环境的命令行工具。通过使用virtualenv
,您可以在单个计算机上创建多个相互独立的 Python 环境,并为每个环境选择不同的包和模块版本,而不会相互干扰。
创建一个虚拟环境时,virtualenv
会在指定的目录中创建一个新的 Python 安装,其中包括 Python 解释器和一些必要的库和工具。您可以在虚拟环境中安装和管理项目所需的特定版本的软件包,而不会影响系统级的 Python 安装和其他项目的依赖关系。
简而言之,virtualenv
是一个用于创建独立 Python 环境的工具,可以帮助您隔离和管理不同项目的依赖关系。
🧩virtualenv
- 命令行下使用
pip install virtualenv
- 选择目录
virtualenv -p python3 pyenv
-p
:后面跟上选择的python版本pyenv
:虚拟环境的名字
./penv/bin/activate
:启动虚拟环境,windows环境要进入/pyenv/Scripts
然后执行.\activate
命令deactivate
:退出虚拟环境
- 在平时的工作中,我们一台电脑中可能要开发多个项目。但是多个项目有可能使用相同的包,但是不同的版本。如我们之前学习的yaml。可能A项目要使用pyyaml的5.1的版本。而B项目要使用pyyaml的5.3的版本。所以,如果我们都使用在一个公共的大环境下,就没有办法保证一个包的两个版本都安装进去。所以我们通过虚拟环境分开两个项目,每一个项目使用各自的虚拟环境,安装各自需要的包与版本号。这样子就会做到各不冲突。各不干扰。
- 下面是一些关于因为windows执行策略限制而导致无法启动虚拟环境的参考文章: