有的时候由于各类缘由,在操做系统下,咱们会安装不少版本的Python解释器。一样,咱们也有可能由于各类缘由,须要不一样版本的模块,好比Django1.8,Django1.11。再加上pip工具管理器的版本混乱问题。这就使得不少人在Python的环境管理上产生极大的混乱。python
一般每一个项目,甚至项目不一样阶段的版本,须要不一样的Python解释器和依赖库。为了清晰明了,安全可靠的管理这些环境,须要为每一个项目或每一个应用各自创建一套“独立、隔离”的Python运行环境。linux
virtualenv就是用来为每个项目建立一套“独立隔离”的Python运行环境的工具。django
在Python3.4以前,virtualenv须要独立手动安装后,方可执行。以后的版本中,Python自带了一个venv库,执行Python –m venv就能够达到与virtalenv一样的效果。更多的用户习惯上仍是使用virtualenv的方式。windows
Python多解释器环境加上virtualenv建立的多虚拟环境共存在同一操做系统下的情形通常以下图所示:安全
核心要点是:python2.7
若是你理解了上面几点,就能明白virtualenv和pip在使用上的区别。工具
以windows操做系统为例,要安装virtualenv,建议直接使用当前环境变量下指定的pip,也就是你操做系统默认的那个python版本所绑定的pip,这样方便命令调用。一般以下:ui
pip install virtualenv
操作系统
能够在命令行界面中验证安装:where virtualenv
命令行
能够看出,这里的virtualenv是做为一个可执行程序,安装在我系统默认的Python36版本下。而我当前操做系统下其实有3个版本的Python:
你或许有疑问?那我要虚拟Python2.7的版本怎么办?在2.7下也装一个virtualenv?不须要的!virtualenv能够指定虚拟的Python解释器版本,只要你本地操做系统下安装了这个版本!
若是本身手动管理全部的虚拟环境,一般会创建一个目录,用来放置全部的虚拟环境。这里:mkdir d:\Python_virtualenvs
,而后运行: virtualenv –p c:\Python27\Python2.exe –-no-site-packages d:\Python_virtualenvs\for_django
-p: 指定你要虚拟的Python版本,这里选择了本地的python2.7
–-no-site-packages:表示在创建虚拟环境时不将原版本中的第三方库拷贝过来,这样就能得到一个纯净的Python环境。
d:\Python_virtualenvs\for_django:代表在该目录下,创建一个叫作for_django的虚拟环境,这样的命名方式,让你一眼就能看出这个虚拟环境是为谁创建的。
咱们看一眼文件系统中的状况,从截图中能够看出,环境很是干净!
命令行下,进入你要使用的虚拟环境的目录下的script文件夹,运行activate
命令。或者使用绝对路径的方式调用该命令。
注意命令提示符(for_django),它表示你当前在for_django这个虚拟环境内。如今,你能够当作一个正常的Python环境使用。例如运行python命令,又或者使用pip安装第三方库pip install requests。这些都被限制和绑定在for_django这个虚拟环境内,不会对操做系统下本地的Python版本和其它的虚拟环境产生任何的影响!
要退出虚拟环境,只要运行script目录下的deactivate
命令就能够了。
要删除虚拟环境,直接删除虚拟环境所在的目录就能够了,注意不要将其它的环境给删了。可是,删除虚拟环境后,全部之前使用该环境的工程都将受到影响。这点很好理解,因此请确保环境再也不有须要再删除!
对于linux操做系统,使用方法基本相似。只是虚拟环境中的文件路径和脚本调用的方式和windows系统下不太同样,仔细看下图中的bin目录,提供了一个activate脚本,以及一个写入环境变量的deactivate命令。
建立虚拟环境: $ virtualenv -p /usr/bin/python2.7 –-no-site-packages my_venv
启动虚拟环境: $ source my_venv/bin/activate
退出虚拟环境: $ deactivate
删除虚拟环境: $ rm –r my_venv
windows下的开发,不少时候使用命令行并非那么方便,尤为是在Pycharm开发环境下,频繁切换界面也是种负担。实际上Pycharm能够指定解释器,直接将项目的Python解释器设置为你要使用的虚拟环境就行,以下所示:
在settings中:
选择Python:
virtualenv虚拟环境配合pip的freeze功能,能够一次性快捷的将整个环境下的第三方模块所有记录下来:pip freeze > d:\requirements.txt
对应的,也能够用它一次性经过在别的机器上或虚拟环境里,将文件里列出的第三方库安装起来。只须要使用命令:pip install -r requirements.txt