打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Virtualenv: 一个Python环境管理工具

Virtualenv: 一个Python环境管理工具

Posted on November 2, 2010 and tagged asdjango. http://c2.teckoo.com/blog/django/virtualenv.html

virtualenv是一个python工具. 它可以创建一个独立的python环境. 这样做的好处是你的python程序运行在这个环境里, 不受其它的python library的版本问题影响. 比如说你想用最新的Django 1.3开发新的项目, 但是现有的Pinax 0.7只支持到Django 1.1. 传统的做法是在环境变量PYTHONPATH里明确地规定程序包的目录. 这么做没什么不好, 而且很清晰. 问题出在以后如果你有需要写别的程序时调用了新的版本, 或者是别的程序员升级了包, 很容易把你的程序也搞垮.

其实我对virtualenv一开始没什么兴趣. 为什么呢? 首先我认为virtualenv也不是完美的解决方案, 它只是一个以空间换时间的方法. 可能是受了ant/maven的影响, 我觉得那样更省事一些. 更主要的原因是我很懒, 又不肯学新的东西. 因为学新的东西是要时间的, 学了一样的新知识后还没怎么用更新的东西就又出来了. 这不是学了白学嘛. 所以我把这些工具分成两类. 一种是可以解决新的问题, 另一种是改进当前的解决方法. 我对前一种的态度是没碰到那类问题就不仔细学习, 了解一下就好. 对后一种就要小心一些, 因为这类方法往往有可能存在过度设计的问题, 也就是说理论上它有可能解决得更好一些, 但学习的时间成本更高, 复杂度也更高, 有可能会得不偿失. 所以我会先看看它是不是足够简单, 否则就不学.

virtualenv充分利用了pip. 对于pip, 我以前读James Bennett的文章 "On packaging" 时就不大以为然. 虽然我一直特尊敬James, 他的博客曾是我学Django的最大帮助, 但这篇文章我觉得只是个人喜好. pip和setuptools相比带来的好处实在有限.

但是virtualenv比pip更进了一步. 它的定位相当于Java里的Maven和最新的ant. 我以前对版本问题不是很在意, 因为我自己只是一个人写程序, 也一直用最新的程序版本. 但是最近的Django1.2出来以后出现了版本不兼容的问题, 而且我用了不少别人的库, 这些程序也出现了版本不兼容的问题. 我在开发机器上测试新的东西出现问题还能接受, 但是到了production环境上就不行了. 全面升级时总是麻烦事. 所以我觉得现在是到了用virtualenv的时候了.

Installation

要是你的Linux repository已经有了virtualenv, 那当然可以直接安装, 例如Ubuntu 10.04,

sudo aptitude install python-virtualenv

要是没有, 如Ubuntu 8.04,

sudo easy_install virtualenvInstalling virtualenv script to /usr/binInstalled /usr/lib/python2.5/site-packages/virtualenv-1.5.1-py2.5.egg

如果在share hosting上, 要麻烦一些:

1. #need to setup python in your own folderunder your home folder, mkdir -p python2.6/{bin,include,share,lib/python2.6/site-packages}2. # get virtualenv packagewget http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.6.4.tar.gztar zxvf virtualenv-1.6.4.tar.gz cd virtualenv-1.6.4/usr/local/bin/python2.6 setup.py install \  --prefix=/home/your_user_name/python2.6/

Setup

创建一个工作环境mysite

virtualenv mysitecd mysitesource bin/activate

这时你就发现多了一个环境变量VIRTUAL_ENV. virtualenv还修改了$PATH, 增加了bin/python, 这样以后的pythonpath就优先指定到当前目录环境里. virtualenv还在ENV/bin里安装了pip. 以后再安装新的python包就都装到这下面了, 如pip install html5lib.

清除工作环境

virtualenv --clear mysite

相关工具

virtualenvwrapper 的作用是管理多个不同的虚拟环境, 让创建/删除/拷贝/切换不同工作环境更加方便一些.

  • installation: sudo pip install virtualenvwrapper
  • virtualenvwrapper doc
  • quick tips:

    export WORKON_HOME=~/sitessource /usr/local/bin/virtualenvwrapper.shmkvirtualenv env1mkvirtualenv env2workon env1echo $VIRTUAL_ENV
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python虚拟环境Virtualenv使用教程
使用virtualenv创建虚拟python环境
如何解决错误 Python 中 matplotlib 丢失的问题
Virtualenv教程
Python开发必备神器之一:virtualenv
GraphScope从安装到编译: 10分钟教你在本地使用和开发
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服