人生苦短,我用Python

一、升级到python2.7

  开发环境的系统是centos 6.0, 默认的python版本是2.6.6, 由于线上环境是python2.7,为了防止版本差异产生的问题,所以要升级python,在centos下升级python有是那种方式

  • yum安装,最简单,但是官方下载源版本更新慢,所以需要自行更改开发机的下载源,如网易的
  • rpm安装
  • 源码安装

这里只介绍源码更新的过程,因为源码安装,个性化定制的东西很多,比较可控吧

安装python,需要先下载一会儿编译期间或者开发期间会用到的依赖组件

yum groupinstall "Development tools"
yum install MySQL-python zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel -y
yum install python-psycopg2 -y
yum install gcc python-devel -y
yum install python-memcached -y

接下来就可以开发下载python了,由于某些原因,python官网会被q(大家都懂得),所以建议更换下载源,如:搜狐的http://mirrors.sohu.com/python

wget http://mirrors.sohu.com/python/2.7.7/Python-2.7.7.tgz
tar -xvf Python-2.7.7.tgz
cd Python-2.7.7
./configure --prefix=/usr/local/python2.7
make
sudo make install

在我第一次编译过程中,遇到了很多奇葩的问题,如:

Python build finished, but the necessary bits to build these modules were not found:  _bsddb                            
_curses _curses_panel
_sqlite3 _ssl _tkinter
bsddb185 bz2 dbm
dl gdbm imageop
readline sunaudiodev zlib
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

给的提示信息,很明显是编译期间对应的模块没找到,所以还需要提前安装依赖包,在网上找到一些依赖包对应关系,如下:

模块 依赖 说明
_bsddb bsddb Interface to Berkeley DB library。Berkeley数据库的接口
_curses ncurses Terminal handling for character-cell displays。
_curses_panel ncurses A panel stack extension for curses。
_sqlite3 sqlite DB-API 2.0 interface for SQLite databases。SqlLite,CentOS可以安装sqlite-devel
_ssl openssl-devel.i686 TLS/SSL wrapper for socket objects。
_tkinter N/A a thin object-oriented layer on top of Tcl/Tk。如果不使用桌面程序可以忽略TKinter
bsddb185 old bsddb module 老的bsddb模块,可忽略。
bz2 bzip2-devel.i686 Compression compatible with bzip2。bzip2-devel
dbm bsddb Simple “database” interface。
dl N/A Call C functions in shared objects.Python2.6开始,已经弃用。
gdbm gdbm-devel.i686 GNU’s reinterpretation of dbm
imageop N/A Manipulate raw image data。已经弃用。
readline readline-devel GNU readline interface
sunaudiodev N/A Access to Sun audio hardware。这个是针对Sun平台的,CentOS下可以忽略
zlib Zlib Compression compatible with gzip

我安装了readline-devel,sqlite-devel,bzip2-devel.i686,openssl-devel.i686,gdbm-devel.i686,libdbi-devel.i686,ncurses-libs,zlib-devel.i686,这些依赖包,重新编译,就一切OK。

安装好之后,确认一下是否安装正确

/usr/local/python2./bin/python2. -V

但是,执行python -v,仍然是python 2.6, 所以做一个软连接

ln -fs /usr/local/python2.7/bin/python2.7 /usr/bin/python

现在执行python -v,显示的就是ptyhon2.7啦

But,还有最后一个问题,更改后,yum会无法运行,所以修改/usr/bin/yum文件的第一行

#!/usr/bin/python

改成

#!/usr/bin/python2.6

再次运行yum,everthing is  ok!

二、安装pip

先安装setuptools,如果python3.0版本,要安装distutils依赖包

wget https://pypi.python.org/pypi/ez_setup

解压,进入目录,执行:

ptyhon ez_setup.py

easy_install 就安装好了,

接下来,安装pip

wget https://pypi.python.org/pypi/pip

解压,进入目录,执行:

python setup.py install

安装成功后,执行 pip ,提示  command not found

原来pip还没有放入到PATH路径中。

# echo $PATH

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/titan/bin

所以 要将pip路径加入到系统环境变量中

# vim /etc/profile

在文档最后加入

export PATH="/usr/local/python-2.7.7/bin:$PATH"

保存退出。执行  # source /etc/profile

不报错,则表示成功

再次执行  # pip -v   ,显示命令提示。

还是由于众所周知的原因,pypi官网的链接也很慢,所以建议使用国内的pypi源,如豆瓣: http://pypi.douban.com

添加~/.pip/pip.conf,并写入如下内容:

[global]
index-url = http://pypi.douban.com/simple
[install]
trusted-host=pypi.douban.com

everthing is ok!

三、VirtualEnv

一台机器上可能会有多个项目,为了保证每个项目的依赖环境都是纯净的,只提供给自己的,这时就需要VirtualEnv啦!

virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:

  1. 在没有权限的情况下安装新套件
  2. 不同应用可以使用不同的套件版本
  3. 套件升级不影响其他应用

1、安装VirtualEnv

通过pip安装,也可以通过yum安装

# pip install virtualenv

使用方法:

virtualenv [虚拟环境名称]

如,创建tjf_env的虚拟环境

virtualenv tjf_env

默认情况下,虚拟环境会依赖系统环境中的site packages,就是说系统中已经安装好的第三方package也会安装在虚拟环境中,如果不想依赖这些package,那么可以加上参数--no-site-packages建立虚拟环境

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

启动虚拟环境

cd ENV
source ./bin/activate

注意此时命令行会多一个(ENV),ENV为虚拟环境名称,接下来所有模块都只会安装到该目录中去。
退出虚拟环境:

deactivate

在虚拟环境安装Python套件Virtualenv 附带有pip安装工具,因此需要安装的套件可以直接运行:

pip install [套件名称]

如果没有启动虚拟环境,系统也安装了pip工具,那么套件将被安装在系统环境中,为了避免发生此事,可以在~/.bashrc文件中加上:

export PIP_REQUIRE_VIRTUALENV=true

或者让在执行pip的时候让系统自动开启虚拟环境:

export PIP_RESPECT_VIRTUALENV=true

2、安装Virtualenvwrapper

Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做:

  1. 将所有虚拟环境整合在一个目录下
  2. 管理(新增,删除,复制)虚拟环境
  3. 切换虚拟环境
  4. ...

安装: sudo pip install virtualenvwrapper

此时还不能使用virtualenvwrapper,默认virtualenvwrapper安装在/usr/local/bin下面,实际上你需要运行virtualenvwrapper.sh文件才行,先别急,打开这个文件看看,里面有安装步骤,我们照着操作把环境设置好。

1. 创建目录用来存放虚拟环境

mkdir $HOME/.virtualenvs

2. 在~/.bashrc中添加行:  export WORKON_HOME=$HOME/.virtualenvs

3. 在~/.bashrc中添加行: source /usr/local/bin/virtualenvwrapper.sh

4. 运行:  source ~/.bashrc

此时virtualenvwrapper就可以使用了。
列出虚拟环境列表  workon

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

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

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

离开虚拟环境  deactivate

VirtualEnv完毕,everything is ok!

四、web框架

有了pip的基础,想安装什么,简直如探囊取去一般轻松自如:

pip install django
pip install tornado
pip install flask

[原]打造Python开发环境之Python环境的更多相关文章

  1. python开发学习-day01 (python安装与版本、字符串、字典、运算符、文件)

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  2. python开发:初识python

    python简介 Python可以应用于众多领域,如:数据分析.组件集成.网络服务.图像处理.数值计算和科学计算等众多领域.目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube.D ...

  3. Python开发 第一篇 python的前世今生

    Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...

  4. 1:Python开发:初识Python

    1.开发语言: 高级语言:Python, Java, PHP ,C# ,Go, ruby, c++ ==>字节码 低级语言:C,汇编 ==>机器码 2.开发语言的对比: PHP类:适用于写 ...

  5. Python开发基础之Python常用的数据类型

    一.Python介绍 Python是一种动态解释型的编程语言.Python它简单易学.功能强大.支持面向对象.函数式编程,可以在Windows.Linux等多种操作系统上使用,同时Python可以在J ...

  6. Qt混合Python开发技术:Python介绍、混合过程和Demo

    前言   Qt中混合Python开发,可调用Python命令与脚本.   Python   Python是一种跨平台的计算机程序设计语言. 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语 ...

  7. Python开发程序:生产环境下实时统计网站访问日志信息

    日志实时分析系统 生产环境下有需求:要每搁五分钟统计下这段时间内的网站访问量.UV.独立IP等信息,用直观的数据表格表现出来 环境描述: 网站为Nginx服务,系统每日凌晨会对日志进行分割,拷贝到其他 ...

  8. 【Python开发实战】Python环境的配置

    1. 安装Pythonsudo aptitude -y install python-dev 安装Distribute:支撑模块构建与导入的包sudo chmod -R 0775 /usr/local ...

  9. 【Python开发】使用python中的matplotlib进行绘图分析数据

    matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备, ...

  10. Python开发——函数【Python内建函数】

随机推荐

  1. oninput 属性

    在HTML5中,新增加了oninput属性,它和onchange 的不同就是立刻发生,而onchange 是在失去焦点的时候才发生 <script> function rangeChang ...

  2. Export excel file using web API

    使用MVC controller输出excel的例子,自不待言,例子满天飞. 由于本项目使用的是Asp.net MVC API,因此在本项目使用API,实现了文件下载功能.代码的原理很简单,基本上是老 ...

  3. js和jQuery前台校验文件大小

    1.支持Google 不支持IE <script type="text/javascript" src="${pageContext.request.context ...

  4. 在word中做复选框打对勾钩

    在word中做复选框打对勾钩 现在终于搞明白正确的操作方法 一.你在word里输入2610,按alt+X就能出 空checkbox 你在word里输入2611,按alt+X就能出 打了勾的checkb ...

  5. NOIP总结

    拿到题目先写裸的暴力,暴力一定要写对,没想出正解有暴力垫底,想出了正解也可以拿来拍 过了样例之后一定要造数据测,数据越坑越好 一定要造极限数据,哪怕造不知道答案的数据都行,主要是检测RE和TLE,正确 ...

  6. Filter Blue Light for Better Sleep(APP 推荐)

    Filter Blue Light for Better Sleep By Carolyn Mohr11 May, 2016 Many people like to use their phones ...

  7. 【翻译】使用CSS3和jQuery制作跟随鼠标方位的Hover特效

    今天我们来学习如何通过CSS3的特性和jQuery来创建一个感知鼠标滑动方向的hover效果.当鼠标滑进的时候,遮罩层会从上次鼠标滑出的方向滑入,当鼠标滑出的时候,遮罩层会跟随鼠标,从鼠标滑出的方向滑 ...

  8. Node.js log4js日志记录

    这次需要给之前弄的文件服务器添加日志记录,一般每天产生的日志会特别多所以安装日期来划分是最好的,这里我用了express框架,为了适应express框架这里在log.js文件中写了use方法. //日 ...

  9. 【测试】并使用scott用户下的emp表写一条SQL语句,执行计划走唯一索引

    SQL; SAL ---------- Execution Plan ---------------------------------------------------------- ------ ...

  10. 数据结构(一)之HelloWord

    最近由于学习上面的需要,要重新的看看数据结构方面的知识!当然,我觉得数据结构也非常的重要,下面是我的学习的一点小小的记录,以备日后的查看! 我的环境: 1:操作系统:windows7 2:编码环境:M ...