virtualenv 有什么用?如果你象我一样热爱 Python ,那么除了基于 Flask 的项目外 还会有其他项目用到 Python 。当项目越来越多时就会面对使用不同版本的 Python 的 问题,或者至少会遇到使用不同版本的 Python 库的问题。摆在你面前的是:库常常不能 向后兼容,更不幸的是任何成熟的应用都不是零依赖。如果两个项目依赖出现冲突, 怎么办?

Virtualenv 就是救星!它的基本原理是为每个项目安装一套 Python ,多套 Python 并存。但它不是真正地安装多套独立的 Python 拷贝,而是使用了一种巧妙的方法让不同 的项目处于各自独立的环境中。让我们来看看 virtualenv 是如何运行的!

如果你使用 Mac OS X 或 Linux ,那么可以使用下面两条命令中任意一条:

$ sudo easy_install virtualenv

或更高级的:

$ sudo pip install virtualenv

上述命令中的任意一条就可以安装好 virtualenv 。也可以使用软件包管理器,在 Ubuntu 系统中可以试试:

$ sudo apt-get install python-virtualenv
注意:安装py3需要ln -s /usr/local/python35/bin/virtualenv /usr/bin/virtualenv
yum安装方式(epel源):
[root@localhost ~]# yum install python-virtualenv
[root@CentOS6 myproject]# virtualenv --python=/usr/bin/python3 env1
Running virtualenv with interpreter /usr/bin/python3
Using base prefix '/usr/local/python35'
New python executable in /home/myproject/env1/bin/python3
Also creating executable in /home/myproject/env1/bin/python
Installing setuptools, pip, wheel...done.
[root@CentOS6 myproject]# ls
env1
[root@CentOS6 myproject]# cd env1/
[root@CentOS6 env1]# ls
bin  include  lib  pip-selfcheck.json
[root@CentOS6 env1]# source bin/activate
(env1) [root@CentOS6 env1]# python -V
Python 3.5.1
(env1) [root@CentOS6 env1]# deactivate
 

使用virtualenvwrapper

virtualenvwrapper是virtualenv的扩展工具,可以方便的创建、删除、复制、切换不同的虚拟环境。

1.安装virtualenvwrapper

     [root@localhost ~]# easy_install virtualenvwrapper

或者:

     [root@localhost ~]# pip install virtualenvwrapper

创建一个文件夹,用于存放所有的虚拟环境:

     [root@localhost ~]# mkdir ~/workspaces

设置环境变量,把下面两行添加到~/.bashrc里。

[root@localhost ~]# export WORKON_HOME=~/workspaces
[root@localhost ~]# source /usr/bin/virtualenvwrapper.sh

然后就可以使用virtualenvwrapper了。
    2.创建虚拟环境:mkvirtualenv [虚拟环境名称]

[root@localhost ~]# mkvirtualenv env1
New python executable in env1/bin/python
Installing setuptools, pip...done.
(env1)[root@localhost ~]# mkvirtualenv env2
New python executable in env2/bin/python
Installing setuptools, pip...done.
(env2)[root@localhost ~]#

注意:mkvirtualenv可以使用virtualenv的参数,比如--python来指定python版本。创建虚拟环境后,会自动切换到此虚拟环境里。虚拟环境目录都在WORKON_HOME里。

3.列出虚拟环境:lsvirtualenv -b

(env2)[root@localhost ~]# lsvirtualenv -b
env1
env2

4.切换虚拟环境:workon [虚拟环境名称]

(env2)[root@localhost ~]# workon env1
(env1)[root@localhost ~]# echo $VIRTUAL_ENV
/root/workspaces/env1

5.查看环境里安装了哪些包:lssitepackages

6.进入当前环境的目录:cdvirtualenv [子目录名]

(env1)[root@localhost ~]# cdvirtualenv
(env1)[root@localhost env1]# pwd
/root/workspaces/env1
(env1)[root@localhost env1]# cdvirtualenv bin
(env1)[root@localhost bin]# pwd
/root/workspaces/env1/bin

进入当前环境的site-packages目录:cdsitepackages [子目录名]

(env1)[root@localhost env1]# cdsitepackages
(env1)[root@localhost site-packages]# pwd
/root/workspaces/env1/lib/python2./site-packages
(env1)[root@localhost site-packages]# cdsitepackages pip
(env1)[root@localhost pip]# pwd
/root/workspaces/env1/lib/python2./site-packages/pip

7.控制环境是否使用global site-packages:toggleglobalsitepackages

8.复制虚拟环境:cpvirtualenv [source] [dest]

[root@localhost ~]# cpvirtualenv env1 env3
Copying env1 as env3...
(env3)[root@localhost ~]#
Q:(env2) [root@CentOS6 myproject]# cpvirtualenv env1 env3
  which: no virtualenv-clone in   (/home/myproject/env2/bin:/usr/lib64/qt3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)ERROR: virtualenvwrapper could not find virtualenv-clone in your path
A:pip install virtualenv-clone

9.退出虚拟环境:deactivate

10.删除虚拟环境:rmvirtualenv [虚拟环境名称]

      [root@localhost ~]# rmvirtualenv env2
      Removing env2...

注:

flask安装在virtualenv中pip install Flask即可  
virtualenv --python=/usr/local/bin/python2 venv

最新文章

  1. 基于MemoryCache的缓存辅助类
  2. Something about Linux
  3. 输入事件驱动---evdev_handler的大致实现流程(修整版)
  4. USACO八皇后
  5. Linux下pdf阅读器推荐
  6. Hibernate中延迟加载和缓存
  7. 知道创宇研发技能表v2.2
  8. duang体加班版
  9. 《University Calculus》-chape8-无穷序列和无穷级数-欧拉恒等式
  10. Hibernate4 clob字段存取
  11. win8.1(64位) apache2.4.3+php5.6.3+mysql5.6安装
  12. Visual Studio 2010 中的 Web 开发
  13. 逃离迷宫(HDU 1728 BFS)
  14. Linux下的摄影后期处理软件
  15. ASP.NET快速开发框架、这才是高大上档次后台管理UI界面
  16. mac 上搭建SVN
  17. adb获取Android性能数据
  18. Python 简单socket模拟ssh
  19. JAVA锁有哪些种类,以及区别(转)
  20. gdb 调试 python

热门文章

  1. Python学习路程day11
  2. js的匿名函数和js的onload函数
  3. Umap2:开源USB host安全评估工具
  4. 地图和定位 、 iCloud
  5. .net解决数据导出excel时的格式问题
  6. VS 2010 编译 Openssl
  7. 帝国CMS【操作类型】说明详解
  8. 或许是 Nginx 上配置 HTTP2 最实在的教程了
  9. Spring触发器配置Quartz
  10. yii使用MongoDB作为数据库服务软件[win7环境下](1)