•  

    不同的人喜欢用不同的方式建立各自的开发环境,但在几乎所有的编程社区,总有一个(或一个以上)开发环境让人更容易接受。 使用不同的开发环境虽然没有什么错误,但有些环境设置更容易进行便利的测试,并做一些重复/模板化的任务,使得在每天的日常工作简单并易于维护。

    什么是virtualenv?

    在Python的开发环境的最常用的方法是使用 virtualenv 包。 Virtualenv是一个用来创建独立的Python环境的包。现在,出现了这样的问题:为什么我们需要一个独立的Python环境? 要回答这个问题,请允许我引用virtualenv自己的文档:

    virtualenv is a tool to create isolated Python environments.

    The basic problem being addressed is one of dependencies and versions, and indirectly permissions. Imagine you have an application that needs version 1 of LibFoo, but another application requires version 2. How can you use both these applications? If you install everything into /usr/lib/python2.7/site-packages (or whatever your platform’s standard location is), it’s easy to end up in a situation where you unintentionally upgrade an application that shouldn’t be upgraded.

    Or more generally, what if you want to install an application and leave it be? If an application works, any change in its libraries or the versions of those libraries can break the application.

    Also, what if you can’t install packages into the global site-packages directory? For instance, on a shared host.

    In all these cases, virtualenv can help you. It creates an environment that has its own installation directories, that doesn’t share libraries with other virtualenv environments (and optionally doesn’t access the globally installed libraries either).

    我们需要处理的基本问题是包的依赖、版本和间接权限问题。想象一下,你有两个应用,一个应用需要libfoo的版本1,而另一应用需要版本2。如何才能同时使用这些应用程序?如果您安装到的/usr/lib/python2.7/site-packages(或任何平台的标准位置)的一切,在这种情况下,您可能会不小心升级不应该升级的应用程序。

    简单地说,你可以为每个项目建立不同的/独立的Python环境,你将为每个项目安装所有需要的软件包到它们各自独立的环境中。

    安装与使用virtualenv

    安装 virtualenv 很简单:

    pip install virtualenv
    

    virtualenv安装完毕后,可以通过运行下面的命令来为你的项目创建独立的python环境:

    mkdir nowamagic_venv
    virtualenv --distribute nowamagic_venv

    OK,成功。上面发生了什么?你创建了文件夹 nowamagic_venv 来存储你的新的独立Python环境。 这个文件夹位于 /root 下面。

    我们再来看看输出:

    New python executable in nowamagic_venv/bin/python2.7
    Also creating executable in nowamagic_venv/bin/python
    Installing Setuptools......done.
    Installing Pip...........done.

    --distribute 选项使virtualenv使用新的基于发行版的包管理系统而不是 setuptools 获得的包。 你现在需要知道的就是 --distribute 选项会自动在新的虚拟环境中安装 pip ,这样就不需要手动安装了。 当你成为一个更有经验的Python开发者,你就会明白其中细节。

    • activate:这个virtualenv的激活文件
    • pip:这个virtualenv的独立pip
    • python:python解释器的一个副本
    • lib/python2.7:所有的新包会被存在这

    试验一下

    通过下面的命令激活这个virtualenv:

    [root@nowamagic ~]# cd nowamagic_venv
    [root@nowamagic nowamagic_venv]# source bin/activate
    (nowamagic_venv)[root@nowamagic nowamagic_venv]#

    运行下面的命令可以更好地理解两者的差异,如果已经进入virtualenv请先离开。

    deactivate  #离开
    

    首先让我们看看如果调用python/pip命令它会调用那一个。

    [root@nowamagic ~]# which python
    /usr/bin/python
    [root@nowamagic ~]# which pip
    /usr/local/bin/pip

    再来一次!这次打开virtualenv,然后看看有什么不同。我的机子上显示如下:

    [root@nowamagic ~]# which python
    /root/nowamagic_venv/bin/python
    [root@nowamagic ~]# which pip
    /root/nowamagic_venv/bin/pip

    virtualenv拷贝了Python可执行文件的副本,并创建一些有用的脚本和安装了项目需要的软件包,你可以在项目的整个生命周期中安装/升级/删除这些包。 它也修改了一些搜索路径,例如PYTHONPATH,以确保:

    • 当安装包时,它们被安装在当前活动的virtualenv里,而不是系统范围内的Python路径。
    • 当import代码时,virtualenv将优先采取本环境中安装的包,而不是系统Python目录中安装的包。

    还有一点比较重要,在默认情况下,所有安装在系统范围内的包对于virtualenv是可见的。 这意味着如果你将simplejson安装在您的系统Python目录中,它会自动提供给所有的virtualenvs使用。 这种行为可以被更改,在创建virtualenv时增加 --no-site-packages 选项的virtualenv就不会读取系统包,如下:

    virtualenv nowamagic_venv --no-site-packages
    
    •  
      到这里,virtualenvs 就讲完了,很简单是不是?跟着步骤来,一切都是顺理成章的。而且也很强大,Python的开发环境配置起来变得非常简单。结合后面要讲的 virtualenvwrapper,可以自动管理多个环境,很神奇的。

    e>

virtualenv 安装使用的更多相关文章

  1. Python virtualenv安装库报错SSL: CERTIFICATE_VERIFY_FAILED

    Python virtualenv安装库报错SSL: CERTIFICATE_VERIFY_FAILED 问题描述 使用pip按照virtualenv报错,如下: pip install virtua ...

  2. python virtualenv安装说明

    环境说明: virtualenv安装: 第一步,创建目录code: 第二步,创建一个独立的Python运行环境,命名为venv: 新建的Python环境被放到当前目录下的venv目录. 第三步,有了v ...

  3. 2.virtualenv安装和配置以及在PyCharm中如何使用虚拟环境

    virtualenv优点 使不同应用开发环境相互独立 环境升级不影响其它应用,也不会影响全局的python环境 它可以防止系统中出现包管理混乱和版本的冲突 1.使用virtualenv pip ins ...

  4. pypy的virtualenv安装mysql的问题解决

    pypy安装mysql 构建基于pypy的virtualenv pip install virtualenv pip install pypy virtualenv --no-site-package ...

  5. python virtualenv 安装运行saltstack

    需求产生场景:      1.python的virtualenv虚拟环境非常的好用.      2.saltstack作为运维自动化的一个重要组件也挺好用的. 但是:      1.saltsatck ...

  6. Windows上python的virtualenv 安装及使用

    源地址:http://blog.csdn.net/liuchunming033/article/details/46008301 VirtualEnv可以方便的解决不同项目对类库的依赖问题. 现实测试 ...

  7. virtualenv 安装

    virtualenv 是一个创建隔离的Python环境的工具. virtualenv要解决的根本问题是库的版本和依赖,以及权限问题.假设你有一个程序,需要LibFoo的版本1,而另一个程序需要版本2, ...

  8. (转)windows上virtualenv 安装及使用

    [注意]要在某个含有空格的目录下面创建virtualenv环境,就要安装 win32api . 原文地址:http://blog.csdn.net/liuchunming033/article/det ...

  9. tensorflow的Virtualenv安装方式安装

    本文介绍了如何在ubuntu上以virtualenv方式安装tensorflow. 安装pip和virtualenv: # Ubuntu/Linux 64-bit sudo apt-get insta ...

随机推荐

  1. Entity Framework Plus 系列目录

    Entity Framework Plus 系列文章计划的已经全部写完,可能还有其他功能没有写到,希望大家能够多动手,尝试一下使用,一定会给您带来一些帮助的.文章全部写完,也应该出一个目录方便查看,目 ...

  2. C# 高效编程笔记1

    C# 高效编程笔记1 1.使用属性而不是可访问的数据成员 (1).NET Framework中的数据绑定类仅支持属性,而不支持共有数据成员 (2)属性相比数据成员更容易修改 2.用运行时常量(read ...

  3. shiro实现session共享

    session共享:在多应用系统中,如果使用了负载均衡,用户的请求会被分发到不同的应用中,A应用中的session数据在B应用中是获取不到的,就会带来共享的问题. 假设:用户第一次访问,连接的A服务器 ...

  4. Java迭代器

    迭代器在其实就是指针,读取集合或者数组中的一个值,读完以后又指向下一条数据. iterator() 迭代器只读,不能改效率要比for循环高 迭代器的一些方法: HasNext() 如果仍有元素可以迭代 ...

  5. heartbeat在yum系发行版本的处理资料

    centos 安装包[rpm]和光盘iso文件 http://mirror.centos.org/centos/ 对应如上包的代码 http://vault.centos.org/ git.cento ...

  6. Database first with EntityFramework (Migration)安装和升级

    最近看了国外几个项目,发现用EntityFramework做Code First的项目现在很流行. 最让我有兴趣的一个功能则是,EntityFramework对于数据库的安装和升级的无缝完美支持,且很 ...

  7. CSS3:RGBA的使用方法

    1.说明 此色彩模式与RGB相同,只是在RGB模式上新增了Alpha透明度. RGBA(R,G,B,A) 2.取值 R: 红色值,正整数值的取值范围为:0 - 255,百分数值的取值范围为:0.0% ...

  8. 在output 子句和 scope_identity() 混合使用的时候的注意事项

    无意睹到一篇旧文档 SR0008:考虑使用 SCOPE_IDENTITY 代替 @@IDENTITY :https://msdn.microsoft.com/zh-cn/library/dd17212 ...

  9. 【C++】继承(虚基类)

    类的继承与派生 面向对象技术强调软件的可重用性,这种重用性通过继承机制来实现.而在类的继承过程中,被重用的原有类称为基类,新创建的类称为派生类.派生类定义语法格式如下: class <派生类名& ...

  10. win8改win7笔记

    内存<=4G,选32位(×86)   内存>=4G,选64位(×64)   (非必须) BIOS设置    USB Boot Support     Disabled改为Enabled(如 ...