乐趣区

关于python:Python-中使用-virtualenv-管理虚拟环境

1. 什么是虚拟环境?

虚拟环境的意义,就如同 虚拟机 一样,它能够实现不同环境中 Python 依赖包互相独立,互不烦扰。

举个例子吧。

假如咱们的电脑里有两个我的项目,他们都用到同一个第三方包,原本所有都顺利。然而因为某种原因,我的项目 B 因为某些起因要应用这个第三方包的一些新个性(新版本才有),而如果就这样贸然降级了,对我的项目 A 的影响咱们无奈评估,这个时候咱们就特地须要有一种解决方案能够让我的项目 A 和 B,处于两个不同的 Python 环境中。互不影响。

为了不便大家对虚拟环境有个意识,我列举了下其长处:

  • 使不同利用开发环境独立
  • 环境降级不影响其余利用,也不会影响全局的 python 环境
  • 能够避免零碎中呈现包管理混乱和版本的抵触

市场上治理 Python 版本和环境的工具有很多,这里列举几个:

  • p:非常简单的交互式 python 版本管理工具。
  • pyenv:简略的 Python 版本管理工具。
  • Vex:能够在虚拟环境中执行命令。
  • virtualenv:创立独立 Python 环境的工具。
  • virtualenvwrapper:virtualenv 的一组扩大。

工具很多,但集体认为最好用的,当属 virtualenvwrapper,举荐大家也应用。

2. 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 

3. 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

根本语法

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

罕用办法

# 创立
$ mkvirtualenv 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.rea…

4. 实战演示

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

如何应用在咱们的开发中应用咱们的虚拟环境呢

通常咱们应用的场景有如下几种

  • 交互式中
  • PyCharm 中
  • 工程中

接下来,我将一一展现。

4.1 交互式中

先比照下,全局环境和虚拟环境的区别,全局环境中有 requests 包,而虚拟环境中并未装置。
当咱们敲入 workon my_env01,后面有 my_env01 的标识,阐明咱们曾经处在虚拟环境中。前面所有的操作,都将在虚拟环境下执行。

4.2 工程项目中

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

假使咱们要在虚构环境中运行这个我的项目,只有更改这个文件头部即可。

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

文件内容:

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

import requests
print "ok"

运行前,留神增加执行权限。

$ chmod +x ming.py

好了。来执行一下

$ ./ming.py

发现和预期一样,真的报错了。阐明咱们指定的虚拟环境有成果。

4.3 PyCharm 中

点击 File – Settings – Project – Interpreter

点击小齿轮。如图点击增加,按提醒增加一个虚拟环境。而后点 OK 就能够应用这个虚拟环境,之后的我的项目都会在这个虚拟环境下运行。

退出移动版