情景1:不同python版本的管理

同一电脑上的多个python版本之前的管理,为了突出问题的普遍存在,下面是有人在segmentfault上提的问题。

摘自:http://segmentfault.com/q/1010000000162043

情景2:同一python版本中同一库的不同版本管理

例如在python2.7下应用A是基于Django1.6,应用B是基于Django1.7的,这种情况怎么管理。

为解决以上问题,下面隆重介绍下virtualenv、virtualenvwrapper。

virtualenv

“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.”

大意就是virtualenv用于在一台机器上创建多个独立的python运行环境,可以解决:

l隔离项目之间的第三方包依赖

l在没有权限的情况下安装新的Python软件包

除此之外,还有一个额外的好处:部署应用时,把开发环境的虚拟环境打包到生产环境即可。

安装

方式一:通过pip

[sudo] pip install virtualenv

方式二:源码方式

下载、解压

cd virtualenv-X.X

[sudo] python setup.py install

方式N…

使用

创建虚拟环境

virtualenv [虚拟环境名称] /virtualevn.exe [虚拟环境名称]

我的环境是windows python3.4,这样创建虚拟环境:

E:\>D:\Python34\Scripts\virtualenv.exe env_py3.4

Using base prefix 'D:\\Python34'

New python executable in env_py3.4\Scripts\python.exe

Installing setuptools, pip...done.

创建虚拟环境env_py3.4之后,对应目录下面有以下文件夹:

E:\env_py3.4的目录

2014/11/2615:38

2014/11/2615:38

2014/05/1615:34

2014/11/2615:38

2014/11/2615:38

其中Lib/site-packages包含了,从系统安装的python3.4下面的库。默认情况下,虚拟环境会依赖系统环境中的site packages,就是说系统中已经安装好的第三方package也会安装在虚拟环境中,如果不想依赖这些package,那么可以加上参数--no-site-packages建立虚拟环境

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

启用虚拟环境

source bin/activate或者 Scripts\activate.bat

启用虚拟环境之后,命令行提示符将以虚拟环境名为前缀,如(env_py3.4)E:\env_py3.4>。也可以通过python打印出os.sys.path进行验证,如在我的env_py3.4虚拟环境启用之后,系统path路径如下所示:

E:\env_py3.4>Scripts\activate

(env_py3.4)E:\env_py3.4>python

Python 3.4.0 (v3.4.0:04f714765c13, Mar 16 2014, 19:24:06) [MSC v.1600 32 bit (In

tel)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> import os

>>>print(os.sys.path)

['', 'E:\\env_py3.4\\Scripts\\python34.zip', 'E:\\env_py3.4\\DLLs', 'E:\\env_py3

.4\\lib', 'E:\\env_py3.4\\Scripts', 'D:\\Python34\\Lib', 'D:\\Python34\\DLLs', '

E:\\env_py3.4', 'E:\\env_py3.4\\lib\\site-packages']

从os.sys.path中可以看出,这个环境下执行python相关的操作都是限定在虚拟环境中。

退出虚拟环境

bin/deactivate或者 Scripts\deactivate

如退出env_py3.4虚拟环境,命令行提示符前缀也相应改变了。

(env_py3.4) E:\env_py3.4>Scripts\deactivate

E:\env_py3.4>

在虚拟环境中安装新的python软件包,跟正常的python一样,并且虚拟环境中已经附带pip、easy_install等工具,可以非常方便的使用。

virtualenvwrapper

Virtualenvwrapper是一个Virtualenv的extension,可使虚拟环境的管理变得更容易。详细来说,Virtualenvwrapper提供下述功能:

l将所有的虚拟环境整合在一个目录下。

l管理(新增、移除、复制)所有的虚拟环境。

l可以使用一个命令切换虚拟环境。

lTab补全虚拟环境的名字。

l每个操作都提供允许使用者自定的hooks。

l可撰写容易分享的extension plugin系统。

安装

通过pip或者easy_install安装virtualenvwrapper

pip install virtualenvwrapper

默认virtualenvwrapper安装在/usr/local/bin下面,实际上你需要运行virtualenvwrapper.sh文件才行。

说明:virtualenvwrapper is a set of shell functions defined in Bourne shell compatible syntax。所以在window平台下,是不是使用不了的,但是对应有一个virtualenvwrapper-win版本()。

virtualenvwrapper-win将安装在python根目录下面,如D:\Python34。

# using pip

pip install virtualenvwrapper-win

# using easy_install

easy_install virtualenvwrapper-win

# from source

git clone git://github.com/davidmarble/virtualenvwrapper-win.git

cd virtualenvwrapper-win

python setup.py install

使用

virtualenvwrapper-win和virtualenvwrapper的使用方式完全一样:

l列出虚拟环境列表:workon或者lsvirtualenv

l新建虚拟环境:mkvirtualenv [虚拟环境名称]

l启动/切换虚拟环境:workon [虚拟环境名称]

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

l离开虚拟环境:deactivate.

例如,我创建了3个虚拟环境

…….

(vn_py3.4_app2) D:\Python34>mkvirtualenv.bat vn_py3.4_app3

Using base prefix 'D:\\Python34'

New python executable in vn_py3.4_app3\Scripts\python.exe

Installing setuptools, pip...done.

(vn_py3.4_app3) D:\Python34>workon.bat

Pass a name to activate one of the following virtualenvs:

==========================================================

vn_py3.4_app1

vn_py3.4_app2

vn_py3.4_app3

默认创建的虚拟环境路径为:%USERPROFILE%\Envs,即C:\Users\用户名\Envs。

切换虚拟环境:

(vn_py3.4_app3) D:\Python34>workon.bat vn_py3.4_app1

(vn_py3.4_app1)D:\Python34>workon.bat vn_py3.4_app2

(vn_py3.4_app2)D:\Python34>

注意:如果window下面碰到D:\Python34\Scripts>mkvirtualenv.bat F:\evn_py3.4_app1

python.exe: can't open file 'D:\Python34\Scripts\virtualenv-script.py': [Errno 2

] No such file or directory,修改mkvirtualenv.bat中的python.exe "%PYHOME%\Scripts\virtualenv-script.py" %ARGS% ==》python.exe "%PYHOME%\Scripts\virtualenv.exe" %ARGS%即可。

总结

基于virtualenv + virtualenvwrapper可以很好的完成环境隔离,保证对每个应用的环境是干净的。而且对一个干净的环境可以通过:

pip freeze > requirements.txt将包依赖信息保存在requirements.txt文件

pip install -r requirements.txt会自动从网上下载并安装所有包

方便应用部署分发,关于pip软件包管理再下一篇介绍。

相关连接:

python使用环境_使用python之环境管理相关推荐

  1. 认识python编程环境_认识Python和安装Python环境

    学习目标: 1. 了解什么是Python?为什么学习Python?Python都可以做什么? 2. 了解并安装Python环境,体验第一Python程序. 学习内容: 1.什么是Python? Pyt ...

  2. 安卓手机python开发环境_使用Python开发Android应用程序:第一节 在手机上配置Python运行环境...

    本节目录: 1.下载和安装 Scripting Layer for Android (SL4A) 2.下载和安装 Python for android 3.第一个HelloWorld程序 1.下载和安 ...

  3. 阿里云服务器搭建python web环境_《Python入门》Linux 下 Python Web开发环境搭建笔记-阿里云开发者社区...

    之前写过 Windows 7下Python Web开发环境搭建笔记,今天写一下在Linux系统下搭建Python Web的开发测试环境. 我使用的系统是:ubuntu 14.04 server,根据个 ...

  4. python pillow环境_解决Python图片处理模块pillow使用中出现的问题

    最近爬一个电影票房的网站(url:http://58921.com/alltime),上面总票房里面其实是一张图片,那么我需要把图片识别成文字,来获取票房数据. 我头脑里第一想到的解决方案就是要用te ...

  5. python selenium 环境_配置Python Selenium环境

    1.安装Python (download Python exe file and install it, add path into home) 2.安装Selenium https://www.cn ...

  6. 在线的python运行环境_在线Python环境(Azure Notebooks)

    前言 上文说道了anaconda的安装和使用.对于动手能力较差的小伙伴们来说,安装还是太过麻烦,一出现问题也不知道如何查错,然后就从入门选择放弃. 说起编程的两个拦路虎,一个就是环境配置,另一个就是编 ...

  7. python交叉编译环境_交叉编译Python

    移植Python到ARM开发板. 1. 先build pc上运行的Python. mkdir build.pc; cd build.pc ../configure --prefix=/proj/mtk ...

  8. 用python搭建环境_搭建一个即开即用的Python环境

    最近为客户开发一个对接Wind金融数据库的Excel数据库,需要用Python做中间层,但Python针对 一般投资与金融行业的人员来说,部署Python环境比较复杂,并且也不太友好,因此我就想把Py ...

  9. 在Eclipse中搭建Python开发环境之三新建python 提示django not found

    python 不是内部或外部命令 现在我假设你的python安装在C:\Python26目录下,设置环境变量方法如下: 方法一.我的电脑->属性->高级->环境变量->系统变量 ...

最新文章

  1. 如何找到调用当前方法的方法?
  2. 修改maven本地仓库位置
  3. ubuntu修改顶栏颜色
  4. wampserver一系列问题总结
  5. JavaScript算法(实例五)最大公约数和最小公倍数 / n的倍数之和 / 组合数
  6. dubbo通信协议之对比
  7. easyui crud java_Easyui 创建 CRUD 应用_EasyUI 插件
  8. python是什么意思中文、好学吗-学习python难吗?是不是越低级的程序越难学,越高级的程序越简单?...
  9. 分布式 id 生成系统 滴滴 Tinyid 快速入门
  10. 高德地图android显示级别指定位置,获取地图中心点/级别
  11. 记一次被动的网卡升级:VMWare导致的无线网卡不能启用
  12. 【快应用】十大手机厂商共推快应用标准
  13. 解答篇:金蝶K3wise总账凭证页面查询不到科目分录核算项目
  14. php seo技巧,十个对排名最有效的SEO​技巧
  15. 模拟直播间评论的动画
  16. 大学英语六级历年真题Word,PDF,和音频 下载
  17. k64 datasheet学习笔记26--Oscillator (OSC)
  18. 如何关闭AndroidX?
  19. 数据包分析技术与网络基础
  20. Python学习-认识python(二)

热门文章

  1. php域名转发,php 域名转发程序
  2. 安卓scrollview无法滑动_安卓上线前,小光有话想对你们说
  3. ClickHouse【环境搭建 02】设置用户密码的两种方式(明文+SHA256)及新用户添加及只读模式 Cannot execute query in readonly mode 问题解决
  4. 福步怎么自定义头像_苹果手机怎么截屏 苹果手机截屏方法有几种?原来还可以这么操作...
  5. nestjs连接远程mysql_Nestjs 链接mysql
  6. spring-security认证授权
  7. 2015年 第06届 蓝桥杯 Java B组 决赛真题详解及小结
  8. PHP简单实现LRU算法原理
  9. SpringBoot 2.x 监控中心:Admin
  10. tableview下拉刷新