在使用python做开发时,如果多人需要在同一台机器上工作,或者机器环境经常变化时,

添加或删除一些python包很可能会影响到你自己的开发环境。

因此,通过virtualenv工具可以创建一个完全属于你自己的虚拟环境。

(其实就是将python相关的一些配置和库放到一个单独的目录下,以后基于这个虚拟环境的python操作都是使用的这个目录)

1.安装virtualenv

virtualenv是一个完全的python包,PyPI网站上面有,使用pip工具可以很方便的安装

# wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
# python get-pip.py
# pip install virtualenv
# pip freeze //查看当前可用的python库里面的包

2.创建一个虚拟python开发环境

# export VIRTUALENV_USE_DISTRIBUTE=true //兼容最新python版本&不兼容旧版本
# mkdir ~/pyworks
# cd ~/pyworks
# virtualenv env //执行以后在~/pyworks目录下会生成env目录,里面包含当前环境所有python相关的库
//启动env虚拟python环境
# source env/bin/activate
(env) xxx # pip freeze //查看当前环境的可用python包
wsgiref==1.0.
(env) xxx # deactivate //退出

3.使用工具管理python虚拟运行环境

以上步骤每次启动的时候都要去找已经生成的环境目录在哪里(~/pyworks/env),不是很方便

可以使用virtualenvwrapper来做这些事:

# pip install virtualenvwrapper //安装virtualenvwrapper,可能有一些依赖,都安装就好了
xxx
/usr/bin/virtualenvwrapper.sh //记下这个文件的位置
xxx
# export WORKON_HOME=/home/pyworks/ //设置环境变量,告诉wrapper你的虚拟环境目录
# locate virtualenvwrapper.sh
# source /usr/bin/virtualenvwrapper.sh

下面是一些virtualenvwrapper相关的命令:

# mkvirtualenv newenv //执行以后WORKON_HOME变量所在的目录下面就有了一个newenv
# workon newenv //启动
(myenv) # deactivate //退出
# rmvirtualenv newenv //删除创建的虚拟环境

当然,你可以将wrapper的设置写到bash里面,以后每次启动的时候都可以直接执行wrapper的命令:

# vim ~/.bashrc
//添加下面的内容
if [ -f /usr/bin/virtualenvwrapper.sh ]; then
export WORKON_HOME=/home/pyworks
source /usr/local/bin/virtualenvwrapper.sh
fi

wrapper文档参考: http://www.doughellmann.com/projects/virtualenvwrapper

附:一些好用的python模块

1. dateutil : 简化日期计算

http://labix.org/python-dateutil

2.bpmappers : 简化模型映射(处理JSON)

http://tokibito.bitbucket.org/bpmappers/

3.chardet : 判断字符编码

http://pypi.python.org/pypi/chardet

4.feedparser : RSS订阅解析

http://code.google.com/p/feedparser

5.PIL : 图像处理(python-imaging)

http://www.pythonware.com/products/pil/

6.PyCrypto : 数据加密处理

https://www.dlitz.net/software/pycrypto

参考书籍:python开发实战

最新文章

  1. Android touch事件处理流程
  2. nc分析代理服务器
  3. php file_get_contents失败[function.file-get-contents]: failed to open stream: HTTP request failed!解决
  4. WAMPSERVER 与 IIS冲突 及如何修改网站根目录
  5. Android手机 Fildder真机抓包
  6. jQuery实现的简单文字提示效果模拟title(转)
  7. [mysql]支持emoji(字符集问题)!
  8. 如何将内存图像数据封装成QImage
  9. iOS学习之Object-C语言类的扩展
  10. Codeforces 4538 (状态压缩dp)Little Pony and Harmony Chest
  11. HTML 表单提交 的简单代码
  12. 【原创】javascript——prototype与__proto__
  13. fread(),fwrite() 读/写流
  14. (原)java中opencv的width的问题
  15. Java多线程yield
  16. CF585E. Present for Vitalik the Philatelist [容斥原理 !]
  17. FTP主动模式和被动模式
  18. 用js实现动态规划解决背包问题
  19. Collections方法的使用
  20. 实现一个自定义的ArrayList类,实现将原List中的每个数据都乘以10

热门文章

  1. 在jqueryEasyUI界面将时间以日期加时分秒的格式显示
  2. Mvc前后端显示不同的404错误页
  3. String methods
  4. Kali linux 2016.2(Rolling)里Metasploit的OpenVAS
  5. 如何配置MySQL?(三)
  6. PostgreSQL Replication之第四章 设置异步复制(4)
  7. js字符串首字母转为大写
  8. @property 的本质是什么?
  9. mongodb 的数据备份与恢复
  10. POJ-1456 Supermarket 贪心问题 有时间限制的最小化惩罚问题