转载自:http://mengzhuo.org/blog/virtualenv%E5%92%8Cpip%E5%B0%8F%E6%8E%A2.html

本文献给那些看着参差不齐的中文文档/教程,但还在坚持折腾以上两个工具的童鞋。

声明:本人也是菜鸟,真正的有用的概念解释,请参看官方文档,以下都是我的个人理解。

virtualenv

这里是导言吗?
用过Python的同学,肯定会对Python及程序的版本之间经常更换的api感到痛苦不以。就拿我折腾的Django来说吧,公司服务器上跑的是Django1.3、同事也是用1.3开发,但是因为我是新来,一个pip
install django
下去,就是1.4.2。好了,你自己写的Django
Project自然没有问题,自己本地测试也没有问题。但是要和其他人交流的时候就蛋疼了,因为你的1.4.2跑不了1.3的程序……当然,这时,你可以
选择卸载自己本地的Django,换成1.3,等你要重新测试自己的Django,怎么样,扯着蛋了吧。为了解决以上问题,virtualenv横空出世
了。
正文
为了解决以上蛋疼问题,我们需要安装virtualenv。
sudo pip install virtualenv
安装好了以后,就可以在任何目录下新建一个virtual-environment(我更喜欢叫:盗梦空间),当然一般我习惯在项目的边上创建一个$project_name-env。例如:
virtualenv demo-env
这下,只需要
source demo-env/bin/activate
就可以激活这个虚拟环境了。如下图所示:

注意到括号里的(demo-env)了没?对,我们已经进入了第一层梦境demo-env。
回到导言里的问题,我们需要在这里建立一个使用django1.3的环境,不让它干扰我们的本地环境。
pip install Django==1.3就可以了,然后在里面运行别人的Django程序,没有问题!装很多python程序,没有问题,这些都不会干扰你的本地环境,放心破坏吧!

PIP

刚才的virtualenv的介绍里已经说了pip的安装命令了。但你当pip只是个安装工具的话,那就大错特错了。pip还有一个更重要的功能——冻结当前梦境开发环境版本(freeze)。
pip freeze

看到了刚才安装的django 1.3了没有?这就是我们目前的生产环境,把这输出结果写到requirement.txt里,别的程序猿们就知道你的程序至少在这个环境下可以跑,这时他们拿着requirement.txt,新建个virtualenv,pip
install -r requirement.txt

就可以运行你的程序了。
pip加速安装
通过pip安装程序,还可以用git和svn的方式,具体操作网上也有。但是对于懒人来说,直接用pip是最好不过的了,但是,有时这会很慢!!!慢到你抓狂。当然,和apt-get一样,pip也可以换源,或者叫添加镜像。
新建一个~/.pip/pip.conf,往里面写入

[global]
index-url=http://e.pypi.python.org/simple
timeout = 30
require-virtualenv = true
download-cache = /tmp

[install]
use-mirrors = true
mirrors =

http://d.pypi.python.org

http://b.pypi.python.org

http://c.pypi.python.org

下载应该就会像飞了一样,配置文件过于清晰,所以我也不用多说了吧 :)

########################################################################

什么是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).

What
It Does www.virtualenv.org/en/latest/…

安装virtualenv和pip

virtualenv,它会自动安装pip
最简单安装virtualenv的方法如下:

$ curl -O https://raw.github.com/pypa/virtualenv/master/virtualenv.py
$ python virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install ...

pip的前提条件是要安装setuptools 或distribute。 安装distribute的方法:

$ curl http://python-distribute.org/distribute_setup.py | python

警告:如果是Python 3.x,必须安装distribute,因为setuptools不支持Python 3.x

virtualenv,也可以直接安装pip

$ curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python

root的权限。

pip是个包管理系统,使用它能方便的安装我们想要的包。

使用pipinstall命令即可安装一个指定的软件包:

$ pip install SomePackage

--upgrade参数:

$ pip install --upgrade SomePackage

$ pip install SomePackage==1.0.4

pip还指定安装包的路径,包括从本地源代码安装或者网上的某个链接安装:

$ pip install ./downloads/SomePackage-1.0.4.tar.gz
$ pip install http://my.package.repo/SomePackage-1.0.4.zip

要卸载一个软件包,使用uninstall命令即可:

$ pip uninstall package-name

如果不清楚要安装的软件包的具体名称,可以使用search命令进行查询:

$ pip search "query"

参考

http://pypi.python.org/pypi/pip/

Linux——Virtualenv和pip小探的更多相关文章

  1. Linux的95个小技巧

    Linux的95个小技巧 by WEB全栈工程师 on 2012 年 03 月 27 日 这里总结了Linux使用中的一些小技巧 1.实现RedHat非正常关机的自动磁盘修复 先登录到服务器,然后在/ ...

  2. python项目依赖管理分享迁移后重建开发环境(一)virtualenv 和 pip

    作者:Panda Fang 出处:http://www.cnblogs.com/lonkiss/p/rebuild-development-environment-with-virtualenv-an ...

  3. Linux安装/升级pip

    Linux安装/升级pip 1.执行脚本 # wget https://bootstrap.pypa.io/get-pip.py # 如果没有 wget,先安装 wget # yum -y insta ...

  4. 初学Python-搞了一个linux用户登录监测小工具

    这几天突发奇想,想学习一下Python.看了点基础,觉得有点枯燥,所以想搞点什么.想了想,就随便弄个检测Linux用户登录的小工具吧~ 首先,明确一下功能: 1.能够捕获 linux 用户登录的信息. ...

  5. linux快速复制大量小文件方法 nc+tar【转】

    1,在需要对大量小文件进行移动或复制时,用cp.mv都会显得很没有效率,可以用tar先压缩再解压缩的方式.  2,在网络环境中传输时,可以再结合nc命令,通过管道和tcp端口进行传输.  nc和tar ...

  6. Linux 快速删除大量小文件方法

    进行以下两步操作即可: 1.第一步:创建空的文件夹: mkdir  /tmp/blank 2.第二步:执行以下命令:rsync --delete-before -d /tmp/blank/ /home ...

  7. Linux下安装pip(遇到了python2.6升级为python2.7道路上的坑,原因已经找到,只差临门一脚了,以后补上)

    1.先说一下什么是pippip 是“A tool for installing and managing Python packages.”,也就是说pip是python的软件安装工具2.下面介绍怎么 ...

  8. windows/linux 更新python pip

    linux环境下 pip install -U pip windows环境下 python -m pip install -U pip python -m pip install --upgrade ...

  9. linux python3换pip 源

    linux下python3 pip 安装模块 # python3 -m pip  install pymysql 1)检查pip.conf文件是否存在    >> cd ~    > ...

随机推荐

  1. 非常好!!!Linux源代码阅读——环境准备【转】

    Linux源代码阅读——环境准备 转自:http://home.ustc.edu.cn/~boj/courses/linux_kernel/0_prepare.html 目录 Linux 系统环境准备 ...

  2. poj 1329(已知三点求外接圆方程.)

    Circle Through Three Points Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3766   Acce ...

  3. MVC中Model和model的区别和用户

    MVC中Model和model的区别,它们应该怎么用呢? 使用@model关键字可以定义一个Action里所对应的一个模型(经常可以叫他实体类). MVC的第一个字母M是Model,承载着View层和 ...

  4. jquery导出Excel表格

    1.引用js插件 <script src="tableExport.js"></script> <script src="jquery.ba ...

  5. (3)C#工具箱-容器

    容器特点:把控件放到容器里,移动容器控件也会跟着移动. 1.flowLayoutPanel(流布局控件) 放入控件后,会自动垂直或水平排列 拉长布局,控件自动跑到一行 2.GroupBox(组合框) ...

  6. Codeforces Round #299 (Div. 2) B. Tavas and SaDDas【DFS/*进制思维/位运算/一个数为幸运数,当且仅当它的每一位要么是4,要么是7 ,求小于等于n的幸运数个数】

    B. Tavas and SaDDas time limit per test 1 second memory limit per test 256 megabytes input standard ...

  7. (寒假集训)Watering the Fields (最小生成树)

    Watering the Fields 时间限制: 1 Sec  内存限制: 64 MB提交: 26  解决: 10[提交][状态][讨论版] 题目描述 Due to a lack of rain, ...

  8. JavaScript 函数调用的 this词法

    函数调用时的this实际上是在函数被调用时发生绑定,它指向什么完全取决于函数在哪里被调用. 特例:当函数作为构造函数被调用时,即使用new 来构造一个新对象,会自动执行以下操作: [1]创建一个新对象 ...

  9. 代理模式(Proxy)--动态代理(CGLIB)

    上一篇:代理模式(Proxy)--动态代理(jdk) (1)CGLIB技术是第三方代理技术,可以对任何类生成代理,代理的原则是对目标对象进行继承代理 (2)如果目标对象被final修饰,则无法被CGL ...

  10. ThinkPHP中实例化对象M()和D()的区别

    ThinkPHP中实例化对象M()和D()的区别 ThinkPHP中实例化对象M()和D()的区别?ThinkPHP如何实例化对象?在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法 ...