一、virtualenv 虚拟环境安装
virtualenv 工具可以用来在 Linux 操作系统中创建一个虚拟的Python环境。这个环境是独立的、隔离的,拥有自己的环境安装目录(而不是把所有的第三方包等都安装在 /usr/lib/python3.4/site-packages 目录(Python3.4的默认Linux安装目录)下)。
它可以用来解决Python项目开发和运行过程中的依赖项和版本问题,而不必和其他项目的Python环境以及全局的Python环境发生冲突。
1、安装 virtualenv
建议使用 pip
工具安装 virtualenv 包:
$ pip install virtualenv
2、创建虚拟环境
安装完成后,可以使用 virtualenv
命令创建放置虚拟环境的目录:
$ virtualenv [OPTIONS] [虚拟环境名称]
创建原理:
在目录 ENV 里会初始化虚拟环境的相关目录和文件,包括 Python 语言本身的环境以及 pip 等相关程序都会在这个目录里创建(拷贝)一份新的。
ENV/lib
和 ENV/include
目录中包含了虚拟环境ENV使用的库文件。在虚拟环境中安装的第三方包会安装在 ENV/lib/python3.4/site-packages
目录下。
ENV/bin
目录里面放置了可执行文件,在里面有新安装的Python 包中的可执行程序,包括pip等相关工具。
OPTIONS:
--no-site-packages 参数:
默认情况下,虚拟环境会依赖系统环境中的 sit package,就是说系统中已经安装好的第三方 package 也会安装在虚拟环境中,如果不想依赖这些 package,那么可以加上 --no-site-packages
参数建立虚拟环境。
$ virtualenv --no-site-packages [虚拟环境名称]
--system-site-packages 参数:
如果你使用 --system-site-packages
参数创建虚拟环境,你创建的虚拟环境会继承 /usr/local/python34/lib/python3.4/site-packages 。
$ virtualenv --system-site-packages ENV
--extra-search-dir 参数:
如果你使用 --extra-search-dir
参数创建虚拟环境,这允许你提供自己的 setuptools 版本,而不是使用虚拟环境中嵌入的版本。
$ virtualenv --extra-search-dir=/path/to/distributions ENV
/path/to/distributions 参数:
指定一个包含 setuptools 以及 pip、wheels 等的目录。virtualenv 命令会在指定的目录中,寻找 wheels,但是会使用 pip 的标准的算法来选择安装的 wheel。
除了指定的目录,搜索顺序还包含:
1、相对于virtualenv.py 的 virtualenv_support 目录;
2、virtualenv.py 所在的目录;
3、当前目录;
--version 显示软件的版本号:
# virtualenv --version
-h, --help 显示帮助信息:
# virtualenv -h
-p PYTHON_EXE, --python=PYTHON_EXE 指定生成的虚拟环境使用的Python解释器:
默认的使用的是安装 virtualenv 的 Python 解释器
# virtualenv -p /usr/bin/python2.6 ENV
--no-setuptools 在新建的虚拟环境中不安装工具包:
# virtualenv --no-setuptools ENV
--no-pip 在新建的虚拟环境中不安装pip:
# virtualenv --no-pip ENV
--no-wheel 在新建的虚拟环境中不安装 wheel:
# virtualenv --no-wheel ENV
--extra-search-dir=DIR 指定安装新的虚拟环境时寻找工具包、pip等的目录路径,这个参数可以用来多次指定:
# virtualenv --extra-search-dir=/usr/local/python34/bin/ ENV
--prompt=PROMPT 可以为创建的虚拟环境指定提示前缀:
# virtualenv --prompt="测试" test
3、启动环境
在新创建的虚拟环境目录中,有一个启动脚本 ENV/bin/activate
,直接使用 source
命令来启动我们新创建的虚拟环境。
$ source ENV/bin/activate
这条命令修改了当前用户的环境变量 $PATH
,将我们新建的虚拟环境目录 ENV/bin/
作为第一个元素添加到了 $PATH 中。因为在Linux系统中输入命令时,命令可执行文件的搜索路径是根据 $PATH 中配置的路径的先后顺序来的,所以接下来你执行的所有命令都将是 ENV/bin/
中的命令(如果此目录中存在这个命令的话),新安装的模块都只会安装到该目录(ENV)中去。
active 脚本也会修改当前用户的命令行显示,在头部会显示出当前使用的虚拟环境。
4、退出和删除环境
如果要退出当前虚拟环境,使用 deactivate
命令:
$ deactivate
如果需要删除我们创建的虚拟环境,只需要退出,并删除创建的文件夹即可:
$ deactivate
$ rm -r /path/to/ENV
二、安装 virtualenvwrapper 扩展包
Virtaulenvwrapper 是 virtualenv 的扩展包,可以把新创建的环境记录下来,不需要每次启动虚拟环境时都执行一遍 source 命令,可以更方便的管理虚拟环境。
它可以实现:
1、将所有虚拟环境整合在一个目录下
2、管理(新增,删除,复制)虚拟环境
3、快速切换虚拟环境
1、安装 virtualenvwrapper :
1.1 建议适用 pip 安装:
$ pip install virtualenvwrapper
1.2 进入 用户主目录,打开 .bashrc 文件,添加如下代码:
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh
WORKON_HOME:
告诉 virtualenvwrapper 在哪里放置你的虚拟环境,默认是在 $HOME/.virtualenvs
目录下。如果这个目录不存在,virtualenvwrapper 运行的时候会自动创建它。
PROJECT_HOME :
告诉virtualenvwrapper在哪里存放你的项目的工作目录。
1.3 然后执行 source 命令,使刚添加的代码生效:
$ source .bashrc
2、使用 virtualenvwrapper
虚拟环境相关操作:
workon: 列出虚拟环境列表
mkvirtualenv [虚拟环境名称]: 新建虚拟环境
workon [虚拟环境名称]: 切换虚拟环境
rmvirtualenv [虚拟环境名称]: 删除虚拟环境
deactivate: 离开虚拟环境
2.1 使用 workon 命令,列出可以使用的虚拟环境:
$ workon
2.2 使用 mkvirtualenv 命令,创建新的虚拟环境:
mkvirtualenv [-a project_path] [-i package] [-r requirements_file] [virtualenv options] ENVNAME
除了-a , -i, -r, -h 所有的命令中的选项都会直接传递给virtualenv,新的虚拟环境在初始化后会自动激活(也就是进入该虚拟环境)。
$ mkvirtualenv ENV
-a 选项:可以将一个现有的项目关联到新建的虚拟环境
$ mkvirtualenv -a phone/ phone
-i 选项:可以在虚拟环境创建后安装一个或多个包
-r选项:可以指定一个列出了要安装那些包的文件,这个参数相当于pip 的 -r 参数。
2.3 使用 mktmpenv 命令自动生成一个唯一的名称:
mktmpenv [(-c|--cd)|(-n|--no-cd)] [VIRTUALENV_OPTIONS]
$ mktmpenv
2.4 lsvirtualenv 命令详细的列出我们创建的虚拟环境
$ lsvirtualenv
2.5 showvirtualenv 显示某个虚拟环境的细节描述
$ showvirtualenv cms
2.6 rmvirtualenv 删除 WORKON_HOME 里的一个虚拟环境
在你删除虚拟环境之前,必须先离开这个虚拟环境。
$ rmvirtualenv ENVNAME
2.7 allvirtualenv 在WORKON_HOME里的所有虚拟环境中执行一条命令:
allvirtualenv command with arguments
$ allvirtualenv pip install -U pip
2.8 workon 切换一个虚拟环境
$ workon environment_name
如果后面没有给出虚拟环境的名称,则会列出可以使用的虚拟环境
$ workon
2.9 deactivate 退出当前使用的虚拟环境
$ deactivate