【Python】virtualenv管理Python虚拟环境

来源:互联网 发布:大卫芬奇电影知乎 编辑:程序博客网 时间:2024/05/16 09:53

安装virtualenv


如果是Mac OS X或者Linux

$ sudo pip install virtualenv

如果是Ubuntu

$ sudo apt-get install python-virtualenv

基本使用


假定我们要开发一个新的项目,需要一套独立的Python运行环境

  1. 创建目录

    $ mkdir myproject$ cd myproject/
  2. 创建环境

    创建一个独立的Python运行环境,命名为venv

    $ virtualenv --python=python3.5 --no-site-packages venvRunning virtualenv with interpreter /usr/bin/python3.5Using base prefix '/usr'New python executable in /home/widiot/flask-workspace/venv/bin/python3.5Also creating executable in /home/widiot/flask-workspace/venv/bin/pythonInstalling setuptools, pkg_resources, pip, wheel...done.

    --python=参数指定要创建的环境中的Python版本

    --no-site-packages参数不会复制已经安装到系统Python环境中的所有第三方包

  3. 启动环境

    新建的Python环境被放到当前目录下的venv/目录。可以用source启动该环境

    $ source venv/bin/activate(venv) myproject $

    注意到命令提示符变了,有个(venv)前缀,表示当前环境是一个名为venv的Python环境

  4. 安装第三方包

    下面正常安装各种第三方包

    (venv) myproject $ pip install jinja2...Successfully installed jinja2-2.7.3 markupsafe-0.23(venv) myproject $ python myapp.py...

    venv环境下,用pip安装的包都被安装到venv这个环境下,系统Python环境不受任何影响。也就是说,venv环境是专门针对myproject这个应用创建的

  5. 退出环境

    退出当前的venv环境,使用deactivate命令

    (venv) myproject $ deactivatemyproject $

    此时就回到了正常的环境,现在pippython均是在系统Python环境下执行

    完全可以针对每个应用创建独立的Python运行环境,这样就可以对每个应用的Python环境进行隔离

  6. 生成可打包环境

    如果需要打包一个ENV, 可以解压后直接使用, 这时候可以使用virtualenv -relocatable指令将ENV修改为可更改位置的ENV

    venv $ virtualenv --relocatable ./Making script ./bin/easy_install relativeMaking script ./bin/easy_install-3.4 relativeMaking script ./bin/pip relativeMaking script ./bin/pip3 relativeMaking script ./bin/pip3.4 relative

    当前的ENV都被修改为相对路径, 可以打包当前目录, 到其他位置使用

原理


virtualenv是如何创建“独立”的Python运行环境的呢?

原理很简单,就是把系统的Python复制一份到virtualenv的环境

用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令pythonpip均指向当前的virtualenv环境