文章目录
1 基础概念
1.1 什么是虚拟环境
我们创建多个python项目,需要不同的python环境。我们需要在项目中安装不同的模块,比如在A项目中我们可能用到NumPy,在B项目中用到request模块。如果在基础环境上安装这么多模块会让基础环境十分冗杂,而且有可能会产生冲突。所以引出虚拟环境的概念,为每个项目创建一个属于它的虚拟环境。
1.2 virtualenv 与 virtualwrapper的作用
1.2.1 virtualenv
virtualenv是一个用于创建虚拟环境的工具。
1.2.2 virtualenvwrapper
wrapper的英文意思是包装,所以virtualenvwrapper就是对virtualwrapper的一个扩展封装。
virtualenvwrapper is a set of extensions to Ian Bicking’s virtualenv tool. <Docs of virtualenvwrapper>
官方文档中给出了简介明了的解释。virtualenvwrapper提供了一个虚拟环境管理的功能,我们使用virtualenv的时候可能把虚拟环境安装在各个地方,不方便管理,切换。这个工具解决了这个问题。
1.3 我是否两者都需要
如果你喜欢把虚拟环境放在本项目下面,我觉得不需要virtualenvwrapper, virtualenv就足够了。
如果你喜欢吧各个虚拟环境放在一个文件夹(保持整洁方便管理),可以使用virtualenvwrapper,很方便管理,切换。
2 如何使用
2.1 virtualenv的使用
2.1.1 十分推荐官方文档
你可以在看完本文后,了解基本的安装、操作后看文档、或者直接去看。官方文档详细易懂!
我在下面的文章中,主要提一些文档不会详细说明,但是大家都会遇到的一些问题,同时这也是一个完整详细的安装使用步骤。
virtualenv官方文档
2.1.2 安装
mac自带python2环境,我们通常使用python3进行开发。常见的Linux发行版也是如此。所以跟官方文档不同的是,这里使用pip3进行安装
pip3 install virtualenv
2.1.3 创建虚拟环境
在Mac、Linux中,如果你的默认python解释器仍是Python2版本,请使用-p
命令来进行指定python版本。创建虚拟环境的格式为:
virtualenv -p python版本 虚拟环境位置
例如
virtualenv -p python3 ~/Code/Env
当然虚拟环境的位置也可以使用相对路径,这样就很方便的在当前文件夹进行创建。
我日常会使用VS Code进行开发,喜欢在当前项目下创建我的虚拟环境。
点击图中的位置,在VS Code中打开命令行终端。因为之前设置过VS Code中的解释器是python3, 而且在项目中打开终端,自动定位到当前文件夹,所以直接创建虚拟环境就好了。
virtualenv .env
2.1.4 继承之前的基础环境的模块
如果你使用 --system-site-packages
的话,可以继承之前的基础环境的模块。
virtualenv --system-site-packages ~/Code/Env
2.1.5 使用虚拟环境
2.1.5.1 在Mac、Linux下
使用:
source /path/to/ENV/bin/activate
退出:
deactivate
2.1.5.1 在Windows下
使用:命令行输入
\path\to\env\Scripts\activate
退出:
deactivate
2.2 virtualenvwrapper
2.2.1 十分推荐官方文档
本文提供了官方文档没有提及的一些常见的细节问题。
2.2.2 安装
如果你使用python3。请使用:
pip3 install virtualenvwrapper
2.2.3 使用前的一些问题
如果你的电脑仍然默认解释器为python2(windows通常不会有这个问题),linux、mac用户可以这样操作。否则会出现以下问题:
/usr/bin/python: No module named virtualenvwrapper virtualenvwrapper.sh
我们应当这样操作:
export WORKON_HOME=~/Envs # 设置虚拟环境的文件夹
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3 # 设置解释器
2.2.4 使用
创建虚拟环境:
mkvirtualenv env1
查看有哪些虚拟环境:
lssitepackages
切换、进入另一个虚拟环境
workon env2 # 前提是有这个虚拟环境