目录
一、参考
聊聊 virtualenv 和 virtualenvwrapper 实践
virtualenv和virtualenvwrapper总结
二、概要
由于Python的版本众多,而且还有Python2和Python3的争论,另外一些依赖包也有兼容性问题,所以很多软件包或者是第三方库很容易出现版本不兼容的问题
可以通过Virtualenv工具很方便的构建出一系列虚拟的Python环境,然后在每个环境中安装需要的软件包(配合pip使用),这一系列的环境是相互隔离的,作为一个独立的环境就不容易出现版本问题,而且还很方便部署
如图所示:
核心要点:
- 一个操作系统下,可以有多个'操作系统级别的'Python解释器;
- 每个Python解释器有一个指向自己的pip工具,两者一一对应;
- 通过virtualenv可以虚拟任何一个'操作系统级别的'Python解释器成为一个'虚拟级别'的解释器
- 每个'虚拟级别'的解释器又拥有自己独立的pip工具和site-packages
环境
Python 3.7
Windows 10
三、Virtualenv
virtualenv为应用提供了隔离的Python运行环境,解决了不同应用间多版本的冲突问题。
优点
- 使不同应用开发环境独立
- 环境升级不影响其他应用,也不会影响全局的python环境
- 它可以防止系统中出现包管理混乱和版本的冲突
步骤
1. 安装
pip install virtualenv
2. 创建虚拟环境
默认是创建在当前命令的目录下的
virtualenv 虚拟环境名
创建好了之后,当前目录下会有一个虚拟环境名的目录,该目录下有:(Windows)
- Include
- Lib
- Scripts
- tcl
注意:如果是Linux下的话,目录结构和Windows下的不太一样:
- bin
- include
- lib
注意:如果有多个Python版本的话,可以加--python/-p指定python版本,后面跟着python版本的python.exe路径
注意:一个虚拟环境是一个文件目录,它可以链接python.exe文件、pip.exe文件和它所使用的python版本。在虚拟环境中安装的库只会存在于虚拟环境的目录里,而不会出现在全局的site-packages目录里。使用完虚拟环境后,可以将目录删除,所有的东西也随之消失了
注意:最好是针对每个Python项目都创建单独的虚拟环境,即每个Python项目都对应一个虚拟环境
注意:创建好的虚拟环境,默认安装有:pip,wheel和setuptools,有一些教程会建议使用 --no-site-packages来创建虚拟环境,这样创建出来的虚拟环境是没有这三个包的,但是 --no-site-packages已经在新版本的Virtualenv中废弃了,详情可以参考文档:https://virtualenv.pypa.io/en/latest/reference/#virtualenv-command
3. 激活虚拟环境
# Linux下
source 虚拟环境目录/bin/activate
# Windows下
虚拟环境目录/Scripts/activate
激活虚拟环境后就进入了一个隔离的环境,安装,卸载和使用模块,都会在虚拟环境中,而不会影响系统和其他环境。
4. 停止虚拟环境
deactivate
5. 删除虚拟环境
rmvirtualenv 虚拟环境名
# 或者
rm -rf 虚拟环境名
更多命令可以使用virtualenv --help或者是去参考官方文档:https://virtualenv.pypa.io/en/latest/reference/#virtualenv-command
四、Virtualenvwrapper
virtualenv 的一个最大的缺点就是,每次开启虚拟环境之前要去虚拟环境所在目录下的 bin/Scripts 目录下 source 一下 activate进行激活,这就需要我们记住每个虚拟环境所在的目录,一旦有多个项目的话,进行项目的切换非常的麻烦
一种可行的解决方案是,将所有的虚拟环境目录全都集中起来,比如放到 ~/virtualenvs/,并对不同的虚拟环境使用不同的目录来管理。virtualenvwrapper 正是这样做的。并且,它还省去了每次开启虚拟环境时候的 source 操作,使得虚拟环境更加好用。
virtualenvwrapper是virtualenv的扩展管理包,用于更方便管理虚拟环境
优点
- 将所有虚拟环境整合在一个目录下
- 管理(新增,删除,复制)虚拟环境
- 切换虚拟环境
Windows下安装步骤
1. 安装
pip install virtualenvwrapper-win
注意:Windows下需要安装virtualenvwrapper-win,而Linux下安装virtualenvwrapper
2. 建立虚拟环境总目录
virtualenvwrapper需要指定一个目录,是用来存放各种虚拟环境目录的目录(WORKON_HOME)
我这里使用 D://Envs 作为虚拟环境目录
mkdir d://Envs
3. 加入环境变量
通过计算机-->属性-->高级系统设置-->环境变量-->在系统变量中新建“变量名”:WORKON_HOME,变量值:D:\Envs
注意:如果不设置环境变量WORKON_HOME 的话,默认的虚拟环境是位于:C:\Users\username\envs
Linux下安装步骤
1. 安装
pip install virtualenvwrapper
默认安装地址:/usr/local/bin
注意:安装完成之后并不能直接使用virtualenvwrapper,还需要进一步进行环境设置
2. 建立虚拟环境总目录
virtualenvwrapper需要指定一个目录,是用来存放各种虚拟环境目录的目录
我这里使用 ~/.virtualenvs 作为虚拟环境目录
mkdir ~/.virtualenvs
3. 设置
virtualenvwrapper使用的时候,需要指定一下环境目录,并且需要source一下virtualenvwrapper.sh
export WORKON_HOME='~/.virtualenvs'
source /usr/local/bin/virtualenvwrapper.sh
由于每次都需要执行这两步操作,所以可以将其写入终端的配置文件中
vim ~/.bashrc
export WORKON_HOME='~/.virtualenvs'
source /usr/local/bin/virtualenvwrapper.sh
export VIRTUALENV_USE_DISTRIBUTE=1 # 总是使用pip/distribute
export WORKON_HOME=~/.virtualenvs # 虚拟环境总目录
export PIP_VIRTUALENV_BASE=$WORKON_HOME
export PIP_RESPECT_VIRTUALENV=true
注意:如果是使用zsh的话,则需要vim ~/.zshrc
注意:如果virtualenvwrapper.sh文件的路径不确定的话,可以使用find / -name virtualenvwrapper.sh来查找对应的virtualenvwrapper.sh路径
4. 运行
source ~/.bashrc
使用
在虚拟环境总目录下创建虚拟环境
mkvirtualenv 虚拟环境名
默认创建在WORKON_HOME(虚拟环境总目录)下,而不是在当前目录下的
注意:可以加--python/-p指定python版本,后面跟着python版本的python.exe路径
注意:最好是针对每个Python项目都创建单独的虚拟环境,即每个Python项目都对应一个虚拟环境
相关命令:
删除环境
rmvirtualenv 虚拟环境名
激活环境/切换环境
workon 虚拟环境名
退出环境
deactivate
列出所有的环境
workon
# 或者
lsvirtualenv -b
五、Pycharm虚拟环境的使用
在Pycharm中很方便的使用虚拟环境,Pycharm中可以指定解释器,直接将项目的Python解释器设置为对应环境中的Python解释器就行了
比如:
我在D:\Envs\下建立了一个虚拟环境za-devops-events
然后在Pycharm中打开对应的项目,设置->Settings-Project Interpreter,选择Add Project Interpreter,选择Existing environment,选择D:\Envs\za-devops-events\Scripts\python.exe
如图:
选择已有的虚拟环境:
选择虚拟环境的Pythoh文件:D:\Envs\za-devops-events\Scripts\python.exe,然后就可以了