<dl id="vorq8"><menu id="vorq8"></menu></dl>

<sup id="vorq8"></sup>
<sup id="vorq8"></sup>
<sup id="vorq8"></sup>

<optgroup id="vorq8"><address id="vorq8"></address></optgroup>

    <sup id="vorq8"><menu id="vorq8"><small id="vorq8"></small></menu></sup>

    <div id="vorq8"><tr id="vorq8"><object id="vorq8"></object></tr></div>

    当前位置:  首页  >  PHP教程  >  PHP 应用  >  知识库

    Python虚拟环境Virtualenv使用教程

    这篇文章主要介绍了Python虚拟环境Virtualenv简明教程,本文整合了两篇关于Virtualenv的使用教程,相信大家有通过本文一定可以学会如何使用Virtualenv,需要的朋友可以参考下
    virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:
    1. 在没有权限的情况下安装新套件
    2. 不同应用可以使用不同的套件版本
    3. 套件升级不影响其他应用

    安装

    代码如下:


    sudo apt-get install python-virtualenv

    使用方法
    [code]
    virtualenv [虚拟环境名称]


    如,创建**ENV**的虚拟环境

    代码如下:


    virtualenv ENV


    默认情况下,虚拟环境会依赖系统环境中的site packages,就是说系统中已经安装好的第三方package也会安装在虚拟环境中,如果不想依赖这些package,那么可以加上参数 --no-site-packages建立虚拟环境

    代码如下:


    virtualenv --no-site-packages [虚拟环境名称]


    启动虚拟环境

    代码如下:


    cd ENV
    source ./bin/activate


    注意此时命令行会多一个(ENV),ENV为虚拟环境名称,接下来所有模块都只会安装到该目录中去。

    退出虚拟环境

    代码如下:


    deactivate


    在虚拟环境安装Python套件
    Virtualenv 附带有pip安装工具,因此需要安装的套件可以直接运行:

    代码如下:


    pip install [套件名称]


    如果没有启动虚拟环境,系统也安装了pip工具,那么套件将被安装在系统环境中,为了避免发生此事,可以在~/.bashrc文件中加上:

    代码如下:


    export PIP_REQUIRE_VIRTUALENV=true


    或者让在执行pip的时候让系统自动开启虚拟环境:

    代码如下:


    export PIP_RESPECT_VIRTUALENV=true
    Virtualenvwrapper


    Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做:
    1. 将所有虚拟环境整合在一个目录下
    2. 管理(新增,?#22659;?#22797;制)虚拟环境
    3. 切换虚拟环境
    4. ...

    安装

    代码如下:


    sudo easy_install virtualenvwrapper


    此时还不能使用virtualenvwrapper,默认virtualenvwrapper安装在/usr/local/bin下面,实际上你需要运行virtualenvwrapper.sh文件才行,先别急,打开这个文件看看,里面有安?#23433;?#39588;,我们照着操作把环境设置好。

    创建目录用来存放虚拟环境

    代码如下:


    mkdir $HOME/.virtualenvs


    在~/.bashrc中添?#26377;校?export WORKON_HOME=$HOME/.virtualenvs

    在~/.bashrc中添?#26377;校簊ource /usr/local/bin/virtualenvwrapper.sh

    运行: source ~/.bashrc

    此时virtualenvwrapper就可以使用了。

    列出虚拟环境列表

    代码如下:


    workon


    也可以使用

    代码如下:


    lsvirtualenv


    新建虚拟环境

    代码如下:


    mkvirtualenv [虚拟环境名称]


    启动/切换虚拟环境

    代码如下:


    workon [虚拟环境名称]

    ?#22659;?#34394;拟环境

    代码如下:


    rmvirtualenv [虚拟环境名称]


    离开虚拟环境

    代码如下:


    deactivate

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    virtualenv通过创建独立Python开发环境的工具, 来解决依赖、版本以及间接权限
    问题. 比如一个项目依赖Django1.3 而当前全局开发环境为Django1.7, 版本跨度过大, 导致不兼容使项目无法正在运行, 使用virtualenv可以解决这些问题.

    virtualenv创建一个拥有自己安装目录的环境, 这个环境不与其他虚拟环境共享库, 能?#29615;?#20415;的管理python版本和管理python库

    1. 安装Virtualenv

    使用pip安装Virtualenv, 使用过python的都应该知道pip包管理神器吧, 即使不知道, 网站也有大把的教程, 不过推荐查看官方安装指南

    代码如下:


    $ pip install virtualenv
    //或者由于权限问题使用sudo临时提升权限
    $ sudo pip install virtualenv

    2. virtualenv基本使用
    现在开始使用virtualenv管理python环境

    代码如下:


    ➜ Test git:(master) ✗ virtualenv ENV #创建一个名为ENV的目录, 并且安装了ENV/bin/python, 创建了lib,include,bin目录,安装了pip
    New python executable in
    Installing setuptools, pip...done.
    ➜ Test git:(master) ✗ cd ENV
    ➜ ENV git:(master) ✗ ll
    drwxr-xr-x 14 andrew_liu staff 476 12 8 08:49 bin
    drwxr-xr-x 3 andrew_liu staff 102 12 8 08:49 include
    drwxr-xr-x 3 andrew_liu staff 102 12 8 08:49 lib

    lib,所有安装的python库都会放在这个目录中的lib/pythonx.x/site-packages/下
    bin,bin/python是在当前环境是使用的python解释器

    如果在命令行中运行virtualenv --system-site-packages ENV, 会?#22363;?usr/lib/python2.7/site-packages下的所有库, 最新版本virtualenv把把访问全局site-packages作为默认行为
    default behavior.

    2.1. 激活virtualenv

    代码如下:


    #ENV目录下使用如下命令
    ➜ ENV git:(master) ✗ source ./bin/activate #激活当前virtualenv
    (ENV)➜ ENV git:(master) ✗ #注意终端发生了变化

    代码如下:


    #使用pip查看当前库
    (ENV)➜ ENV git:(master) ✗ pip list
    pip (1.5.6)
    setuptools (3.6)
    wsgiref (0.1.2) #发现在只有这三个
    pip freeze #显示所有依赖
    pip freeze > requirement.txt #生成requirement.txt文件
    pip install -r requirement.txt #根据requirement.txt生成相同的环境

    2.2. 关闭virtualenv

    使用下面命令

    代码如下:


    $ deactivate


    2.3. 指定python版本

    可以使用-p PYTHON_EXE选项在创建虚拟环境的时候指定python版本


    代码如下:


    #创建python2.7虚拟环境
    ➜ Test git:(master) ✗ virtualenv -p /usr/bin/python2.7 ENV2.7
    Running virtualenv with interpreter /usr/bin/python2.7
    New python executable in ENV2.7/bin/python
    Installing setuptools, pip...done.


    代码如下:


    #创建python3.4虚拟环境
    ➜ Test git:(master) ✗ virtualenv -p /usr/local/bin/python3.4 ENV3.4
    Running virtualenv with interpreter /usr/local/bin/python3.4
    Using base prefix '/Library/Frameworks/Python.framework/Versions/3.4'
    New python executable in ENV3.4/bin/python3.4
    Also creating executable in ENV3.4/bin/python
    Installing setuptools, pip...done.

    到此已经可以解决python版?#22659;?#31361;问题和python库不同版本的问题

    3. 其他

    3.1. 生成可打包环境

    某些特殊需求下,可能没有网络, 我们期望直接打包一个ENV, 可以解压后直接使用, 这时候可以使用virtualenv -relocatable指令将ENV修改为可更改位置的ENV

    代码如下:


    #对当前已经创建的虚拟环境更改为可迁移
    ➜ ENV3.4 git:(master) ✗ virtualenv --relocatable ./
    Making script ./bin/easy_install relative
    Making script ./bin/easy_install-3.4 relative
    Making script ./bin/pip relative
    Making script ./bin/pip3 relative
    Making script ./bin/pip3.4 relative

    3.2. 获得帮助

    代码如下:


    $ virtualenv -h

    当前的ENV都被修改为相对路径, 可以打包当前目录, 上传到其他位置使用
    这并不能使虚拟环境跨?#25945;?#20351;用

    4. 参考链接
    virtualenv官方文档 http://virtualenv.readthedocs.org/en/latest/virtualenv.html

    吐了个 "CAO" !
    扫码关注 PHP1 官方微信号
    PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
    Copyright ? 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有
         
    pc蛋蛋
    <dl id="vorq8"><menu id="vorq8"></menu></dl>

    <sup id="vorq8"></sup>
    <sup id="vorq8"></sup>
    <sup id="vorq8"></sup>

    <optgroup id="vorq8"><address id="vorq8"></address></optgroup>

      <sup id="vorq8"><menu id="vorq8"><small id="vorq8"></small></menu></sup>

      <div id="vorq8"><tr id="vorq8"><object id="vorq8"></object></tr></div>

      <dl id="vorq8"><menu id="vorq8"></menu></dl>

      <sup id="vorq8"></sup>
      <sup id="vorq8"></sup>
      <sup id="vorq8"></sup>

      <optgroup id="vorq8"><address id="vorq8"></address></optgroup>

        <sup id="vorq8"><menu id="vorq8"><small id="vorq8"></small></menu></sup>

        <div id="vorq8"><tr id="vorq8"><object id="vorq8"></object></tr></div>