• virtualenv 虚拟环境


    有的时候因为各种原因,在操作系统下,我们会安装很多版本的Python解释器。同样,我们也有可能因为各种原因,需要不同版本的模块,比如Django1.8,Django1.11。再加上pip工具管理器的版本混乱问题。这就使得很多人在Python的环境管理上产生极大的混乱。

    通常每个项目,甚至项目不同阶段的版本,需要不同的Python解释器和依赖库。为了清晰明了,安全可靠的管理这些环境,需要为每个项目或每个应用各自建立一套“独立、隔离”的Python运行环境。

    virtualenv就是用来为每一个项目创建一套“独立隔离”的Python运行环境的工具。

    在Python3.4之前,virtualenv需要独立手动安装后,方可执行。之后的版本中,Python自带了一个venv库,执行Python –m venv就可以达到与virtalenv同样的效果。更多的用户习惯上还是使用virtualenv的方式。

    Python多解释器环境加上virtualenv创建的多虚拟环境共存在同一操作系统下的情形一般如下图所示:

    image.png-49.5kB

    核心要点是:

    • 一个操作系统下,可以有多个“操作系统级别的”Python解释器;
    • 每个Python解释器有一个指向自己的pip工具,两者一一对应;
    • 通过virtualenv可以虚拟任何一个“操作系统级别的”Python解释器成为一个“虚拟级别”的解释器;
    • 每个“虚拟级别”的解释器又拥有自己独立的pip工具和site-packages。

    如果你理解了上面几点,就能明白virtualenv和pip在使用上的区别。

    安装virtualenv

    以windows操作系统为例,要安装virtualenv,建议直接使用当前环境变量下指定的pip,也就是你操作系统默认的那个python版本所绑定的pip,这样方便命令调用。通常如下:

    pip install virtualenv

    可以在命令行界面中验证安装:where virtualenv

    image.png-64.5kB

    可以看出,这里的virtualenv是作为一个可执行程序,安装在我系统默认的Python36版本下。而我当前操作系统下其实有3个版本的Python:

    image.png-57.4kB

    你或许有疑问?那我要虚拟Python2.7的版本怎么办?在2.7下也装一个virtualenv?不需要的!virtualenv可以指定虚拟的Python解释器版本,只要你本地操作系统下安装了这个版本!

    建立虚拟环境

    如果自己手动管理所有的虚拟环境,通常会建立一个目录,用来放置所有的虚拟环境。这里:mkdir d:Python_virtualenvs,然后运行: virtualenv –p c:Python27Python2.exe –-no-site-packages d:Python_virtualenvsfor_django

    image.png-112.8kB

    -p: 指定你要虚拟的Python版本,这里选择了本地的python2.7

    –-no-site-packages:表示在建立虚拟环境时不将原版本中的第三方库拷贝过来,这样就能获得一个纯净的Python环境。

    d:Python_virtualenvsfor_django:表明在该目录下,建立一个叫做for_django的虚拟环境,这样的命名方式,让你一眼就能看出这个虚拟环境是为谁建立的。

    我们看一眼文件系统中的情况,从截图中可以看出,环境非常干净!

    image.png-64.9kBimage.png-78.9kB

    使用虚拟环境

    命令行下,进入你要使用的虚拟环境的目录下的script文件夹,运行activate命令。或者使用绝对路径的方式调用该命令。

    image.png-212.2kB

    注意命令提示符(for_django),它表示你当前在for_django这个虚拟环境内。现在,你可以当做一个正常的Python环境使用。例如运行python命令,又或者使用pip安装第三方库pip install requests。这些都被限制和绑定在for_django这个虚拟环境内,不会对操作系统下本地的Python版本和其它的虚拟环境产生任何的影响!

    image.png-175.8kB

    退出虚拟环境

    要退出虚拟环境,只要运行script目录下的deactivate命令就可以了。

    要删除虚拟环境,直接删除虚拟环境所在的目录就可以了,注意不要将其它的环境给删了。但是,删除虚拟环境后,所有以前使用该环境的工程都将受到影响。这点很好理解,所以请确保环境不再有需要再删除!

    linux操作系统下的使用

    对于linux操作系统,使用方法基本类似。只是虚拟环境中的文件路径和脚本调用的方式和windows系统下不太一样,仔细看下图中的bin目录,提供了一个activate脚本,以及一个写入环境变量的deactivate命令。

    image.png-38.7kB

    image.png-45.5kB

    创建虚拟环境: $ virtualenv -p /usr/bin/python2.7 –-no-site-packages my_venv

    启动虚拟环境: $ source my_venv/bin/activate 

    退出虚拟环境: $ deactivate 

    删除虚拟环境: $ rm –r my_venv

    Pycharm结合virtualenv的使用

    windows下的开发,很多时候使用命令行并不是那么方便,尤其是在Pycharm开发环境下,频繁切换界面也是种负担。实际上Pycharm可以指定解释器,直接将项目的Python解释器设置为你要使用的虚拟环境就行,如下所示:

    在settings中:

    image.png-111.9kB

    选择Python:image.png-111.4kB

    virtualenv配合pip快速建立开发环境

    virtualenv虚拟环境配合pip的freeze功能,可以一次性快捷的将整个环境下的第三方模块全部记录下来:pip freeze > d: equirements.txtimage.png-48.6kB

    对应的,也可以用它一次性通过在别的机器上或虚拟环境里,将文件里列出的第三方库安装起来。只需要使用命令:pip install -r requirements.txt

  • 相关阅读:
    数据库操作顺序
    数据库不允许远程连接
    redis-操作
    flask源码系列之-wtforms
    MySQL的btree索引和hash索引的区别
    HDU 1242
    HDU 1241
    HDU 1240
    HDU 1010
    Codeforces Round #339 (Div. 2) A
  • 原文地址:https://www.cnblogs.com/daluozi/p/9476078.html
Copyright © 2020-2023  润新知