零基础学 Python(95):使用 virtualenv 管理虚拟环境

作者: 王炳明 分类: Python 基础教程 发布时间: 2021-07-29 08:33 热度:271

查看本系列教程目录:请点击:零基础小白入门 Python 系列教程


1. 安装virtualenv

由于 virtualenvwrapper 是 virtualenv 的一组扩展,所以如果要使用 virtualenvwrapper,就必须先安装 virtualenv。

基本使用

由于virtualenv创建虚拟环境是在当前环境下创建的。所以我们要准备一个专门存放虚拟环境的目录。(以下操作在Linux在完成,Windows相对简单,请自行完成,有不明白的请微信与我联系。)

创建

# 准备目录并进入
mkdir -p /home/wangbm/Envs cd !# 创建虚拟环境(按默认的Python版本)
# 执行完,当前目录下会有一个my_env01的目录 virtualenv my_env01

# 你也可以指定版本
virtualenv -p /usr/bin/python2.7 my_env01 virtualenv -p /usr/bin/python3.6 my_env02

# 你肯定觉得每次都要指定版本,相当麻烦吧?
# 在Linux下,你可以把这个选项写进入环境变量中
$ echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7" >> ~/.bashrc

进入/退出

$ cd /home/wangbm/Envs

# 进入
$ source my_env01/bin/activate

# 退出
$ deactivate

删除
删除虚拟环境,只需删除对应的文件夹就行了。并不会影响全局的Python和其他环境。

$ cd /home/wangbm/Envs
$ rm -rf my_env01

注意:
创建的虚拟环境,不会包含原生全局环境的第三方包,其会保证新建虚拟环境的干净。

如果你需要和全局环境使用相同的第三方包。可以使用如下方法:

# 导出依赖包
pip freeze>requirements.txt

# 安装依赖包 pip install -r requirements.txt 

2. 使用 virtualenvwrapper

virtualenv 虽然已经相当好用了,可是功能还是不够完善。

你可能也发现了,要进入虚拟环境,必须得牢记之前设置的虚拟环境目录,如果你每次按规矩来,都将环境安装在固定目录下也没啥事。但是很多情况下,人是会懒惰的,到时可能会有很多个虚拟环境散落在系统各处,你将有可能忘记它们的名字或者位置。

还有一点,virtualenv 切换环境需要两步,退出 -> 进入。不够简便。

为了解决这两个问题,virtualenvwrapper就诞生了。

安装

# 安装 - Linux
pip install virtualenvwrapper

# 安装 - Windows
pip install virtualenvwrapper-win

配置
先find一下virtualenvwrapper.sh文件的位置

find / -name virtualenvwrapper.sh
# /usr/bin/virtualenvwrapper.sh

若是 windows 则使用everything 查找 virtualenvwrapper.bat 脚本

D:\Program Files (x86)\Python38-32\Scripts\virtualenvwrapper.bat

在~/.bashrc 文件新增配置

export WORKON_HOME=HOME/.virtualenvs
export PROJECT_HOME=HOME/workspace
export VIRTUALENVWRAPPER_SCRIPT=/usr/bin/virtualenvwrapper.sh
source /usr/bin/virtualenvwrapper.sh

若是 windows 则新增环境变量:WORKON_HOME

零基础学 Python(95):使用 virtualenv 管理虚拟环境插图

基本语法

mkvirtualenv [-a project_path] [-i package] [-r requirements_file] [virtualenv options] ENVNAME

常用方法

# 创建
mkvirtualenv my_env01 mkvirtualenv --p python3.9 my_env01
mkvirtualenv --python=python3.9 my_env01

# 进入 workon my_env01

# 退出
deactivate

# 列出所有的虚拟环境,两种方法 workon
lsvirtualenv

# 在虚拟环境内直接切换到其他环境 workon my_env02

# 删除虚拟环境
$ rmvirtualenv my_env01

其他命令

# 列出帮助文档
virtualenvwrapper

# 拷贝虚拟环境 cpvirtualenv ENVNAME [TARGETENVNAME]

# 在所有的虚拟环境上执行命令
allvirtualenv pip install -U pip

# 删除当前环境的所有第三方包 wipeenv

# 进入到当前虚拟环境的目录
cdsitepackages

# 进入到当前虚拟环境的site-packages目录 cdvirtualenv

# 显示 site-packages 目录中的内容
$ lssitepackages

更多内容,可查看 官方文档
https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html

3. 实战演示

以上内容,是一份使用指南。接下来,一起来看看,如何在项目中使用虚拟环境。

如何使用在我们的开发中使用我们的虚拟环境呢

通常我们使用的场景有如下几种

  • 交互式中
  • PyCharm
  • 工程中

接下来,我将一一展示。

3.1 交互式中

先对比下,全局环境和虚拟环境的区别,全局环境中有requests包,而虚拟环境中并未安装。
当我们敲入 workon my_env01,前面有my_env01的标识,说明我们已经处在虚拟环境中。后面所有的操作,都将在虚拟环境下执行。
零基础学 Python(95):使用 virtualenv 管理虚拟环境插图(1)

3.2 工程项目中

我们的工程项目,都有一个入口文件,仔细观察,其首行可以指定Python解释器。

倘若我们要在虚拟环境中运行这个项目,只要更改这个文件头部即可。

现在我还是以,import requests 为例,来说明,是否是在虚拟环境下运行的,如果是,则和上面一样,会报错。

文件内容:

#!/root/.virtualenvs/my_env01/bin/python

import requests
print "ok"

运行前,注意添加执行权限。

$ chmod +x ming.py

好了。来执行一下

$ ./ming.py

发现和预期一样,真的报错了。说明我们指定的虚拟环境有效果。
零基础学 Python(95):使用 virtualenv 管理虚拟环境插图(2)

3.3 PyCharm中

点击 File – Settings – Project – Interpreter
零基础学 Python(95):使用 virtualenv 管理虚拟环境插图(3)
点击小齿轮。如图点击添加,按提示添加一个虚拟环境。然后点 OK 就可以使用这个虚拟环境,之后的项目都会在这个虚拟环境下运行。
零基础学 Python(95):使用 virtualenv 管理虚拟环境插图(4)

明哥公众号

文章有帮助,请作者喝杯咖啡?

发表评论