Skip to content

virtualenv虚拟环境

更新: 2025/2/24 字数: 0 字 时长: 0 分钟

理解环境

Python环境

**Python环境:指运行Python程序的基础环境。**电脑上只要安装了Python,就有了一个能运行Python程序的基础环境,这个基础环境的名称一般为:(base)

通常我们所使用的pip或者conda命令下载的第三方库,全部都安装在了基础环境 (base) 当中。

QQ截图20210616145151

开发场景

在实际项目开发中,我们通常会根据自己的需求去安装相应的框架库,但每个项目使用的框架库或框架库版本可能不一样。如下开发场景:

场景1:项目A需要某个框架1.0版本,项目B需要这个库的2.0版本。那么当你使用这两个项目时,你就需要来回的卸载安装了,这样很容易就给你的项目带来莫名的错误。

场景2:公司之前的项目需要python2.7环境下运行,而你接手的项目需要在python3环境中运行,使用python3则公司之前的项目可能无法运行,反之则新项目运行有麻烦。

**频繁更新或卸载操作这对我们的开发环境十分不友好,还可能给项目造成很多不必要的麻烦。**为了解决上述场景带来的不便,我们有必要学习如何创建和使用虚拟环境。

虚拟环境

上述场景的主要问题在于,所有的项目都使用了同一个环境。解决起来也很简单,给每个项目单独搭建一个私有的环境。

**虚拟环境:针对特定的项目独立创建的一个虚拟化的私有Python环境。通俗的来讲,我们把这部分独立出来的东西称作“容器”,在这个容器中,我们可以只安装项目需要的依赖包,各个容器之间互相隔离,互不影响。**譬如,本次学习需要用到Django,我们可以做一个Django的虚拟环境,里面只需要安装Django相关包就可以了,需要Scrapy库,就再创建一个虚拟环境来安装Scrapy相关库就行了。

virtualenv

简介virtualenv

**virtualenv是专门用来维护多套为应用程序相互“隔离”的Python运行环境的工具。**借助 virtualenv 我们可以在一台主机上创建多套相互隔离的Python运行环境。

589b1d0ed3165ae2f86dbba9

安装virtualenv

打开命令行窗口,输入下面命令即可安装:

pip3 install virtualenv

检查是否安装成功:

virtualenv --version

QQ截图20210616162800

如果出现 virtualenv不是内部命令也不是外部命令 的错误,我们可以找到 virtualenv.exe 的所在路径,执行命令查看版本:

"路径/virtualenv.exe" --version

QQ截图20230702190844

?> 提示:从版本20开始取消参数 --no-site-packages,默认不会将系统Python环境中第三方包复制到新建虚拟环境中。

搭建虚拟环境

创建环境

在磁盘中选择一个路径或者新建文件夹用来存放虚拟环境,将命令行窗口的操作路径切换到该路径下:

QQ截图20210616162409

输入下面命令来创建一个虚拟环境:

# 当前路径创建虚拟环境
virtualenv 环境名称

# 指定路径创建虚拟环境
virtualenv 路径\环境名称

# 指定python版本创建虚拟环境
virtualenv -p python路径 环境名称

这样就在当前路径下创建了一个干净的、没有多余安装包、名称为 project_env 的虚拟环境:

QQ截图20210616164523

如果出现 virtualenv不是内部命令也不是外部命令 的错误,我们可以找到 virtualenv.exe 的所在路径,执行命令创建环境:

"路径/virtualenv.exe" 环境名称

QQ截图20230702191337

?> 提示:为了方便管理,所有的项目环境最好都放一个路径下且环境命名通常含有 env

激活环境

无论是在基础环境(base)的路径还是虚拟环境(project_env)的路径都会有一个Scripts文件夹,里面存放运行python的脚本程序,其中都包含有名为activate的文件。

QQ截图20210616165555

我们在命令行中运行该命令:activate执行后可以发现命令行最前面出现了 (环境名称) 标识,说明该环境已经激活可以使用了。

QQ截图20210616170016

有时候在Windows系统中,我们通过 activate 命令进入虚拟环境可能会报一个 无法加载文件...,因为在此系统上禁止运行脚本。 错误,这是因为运行了activate.bat后会在同级目录下生成activate.ps1,PowerShell 默认不允许执行*.ps1脚本文件。这时我们可以使用管理员打开powershell,在里面执行命令 Set-ExecutionPolicy RemoteSigned 修改policy即可再次启动虚拟环境:

QQ截图20221222234647

使用 pip list 查看基础环境(base)和虚拟环境(project_env)里面所安装的库。可以发现虚拟环境(project_env)只安装有3个基础库是一个很干净的环境,而基础环境(base)里面则安装了很多的库。

QQ截图20210616170557

退出环境

同样有激活环境的文件和命令,也就有退出环境的文件和命令:deactivate执行后命令行最前面没有了 (环境名称) 标识,说明已退出该环境。

QQ截图20210616172041

使用虚拟环境

命令行使用

命令行中使用虚拟环境,在上面已讲过,执行命令:activate命令行最前面出现了 (环境名称) 标识,说明该环境已经激活可以使用了。

Pycharm使用

在Pycharm的File—Settings—Project——点击‘齿轮’——Show All

QQ截图20210616172808

展示已添加的环境(包括一个基础环境和多个虚拟环境)——点击 + 号——添加环境

QQ截图20210616173050

选择下方 Existing environment(已经存在的环境),因为我们上面已经创建了虚拟环境(project_env),路径要特别指定虚拟环境 project_env\Scripts\python.exe 可执行文件,点击ok即可添加。

QQ截图20210616173407

这里可以看到列表里面多了一个虚拟环境(project_env):

QQ截图20210616173600

在Project当中选择虚拟环境(project_env),点击Apply即可应用新建的虚拟环境(project_env):

QQ截图20210616174454

我们还可以指定文件在特定的虚拟环境(project_env)中运行,点击Edit Configurations:

QQ截图20210616174009

在Python interpreter中选择新建的虚拟环境(project_env),点击Apply即可:

QQ截图20210616175048

Pycharm下面的Terminal关闭后再次打开,可以看到该命令行默认是在虚拟环境(project_env)中运行了。

QQ截图20210616175342