[原]打造Python开发环境之Python环境
人生苦短,我用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、安装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的扩展包,用于更方便管理虚拟环境,它可以做:
- 将所有虚拟环境整合在一个目录下
- 管理(新增,删除,复制)虚拟环境
- 切换虚拟环境
- ...
安装: 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环境的更多相关文章
- python开发学习-day01 (python安装与版本、字符串、字典、运算符、文件)
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- python开发:初识python
python简介 Python可以应用于众多领域,如:数据分析.组件集成.网络服务.图像处理.数值计算和科学计算等众多领域.目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube.D ...
- Python开发 第一篇 python的前世今生
Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...
- 1:Python开发:初识Python
1.开发语言: 高级语言:Python, Java, PHP ,C# ,Go, ruby, c++ ==>字节码 低级语言:C,汇编 ==>机器码 2.开发语言的对比: PHP类:适用于写 ...
- Python开发基础之Python常用的数据类型
一.Python介绍 Python是一种动态解释型的编程语言.Python它简单易学.功能强大.支持面向对象.函数式编程,可以在Windows.Linux等多种操作系统上使用,同时Python可以在J ...
- Qt混合Python开发技术:Python介绍、混合过程和Demo
前言 Qt中混合Python开发,可调用Python命令与脚本. Python Python是一种跨平台的计算机程序设计语言. 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语 ...
- Python开发程序:生产环境下实时统计网站访问日志信息
日志实时分析系统 生产环境下有需求:要每搁五分钟统计下这段时间内的网站访问量.UV.独立IP等信息,用直观的数据表格表现出来 环境描述: 网站为Nginx服务,系统每日凌晨会对日志进行分割,拷贝到其他 ...
- 【Python开发实战】Python环境的配置
1. 安装Pythonsudo aptitude -y install python-dev 安装Distribute:支撑模块构建与导入的包sudo chmod -R 0775 /usr/local ...
- 【Python开发】使用python中的matplotlib进行绘图分析数据
matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备, ...
- Python开发——函数【Python内建函数】
随机推荐
- JAVA中抽象类的一些总结
抽象类和普通类一样,有构造函数.抽象类中有一些属性,可以利用构造方法对属性进行初始化.子类对象实例化的时候先执行抽象类的构造,再执行子类构造. 抽象类不能用final声明.因为抽象类必须有子类继承,所 ...
- 一个类似bootstrap的foundation
提供了和BOOTSTRAP一样的功能,但明显比bootstrap有更好的效果 比如 <button> 直接就添加了样式了. http://www.foundcss.com/ Bootstr ...
- python 之 模拟GET/POST提交
以 POST/GET 方式向 http://127.0.0.1:8000/test/index 提交数据. # coding:utf-8 import httplib import urllib cl ...
- NYOJ 47-过河问题
点击打开链接 过河问题 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不 ...
- CDN和DNS
相信有很多的朋友会被这几个名词绕的有些头大,很多朋友觉得智能DNS跟双线加速.CDN加速是类似的技术.其实不然,虽然他们的目的都是一个:让用户更快的访问网站.但是他们的应用原理却大相径庭.大家一定很清 ...
- ORA-04031 With Leak in "OBJ STAT MEMO" Allocations Seen in V$SGASTAT on 10.2.0.5 (文档 ID 1350050.1)
APPLIES TO: Oracle Server - Enterprise Edition - Version: 10.2.0.5<max_ver> and later [Relea ...
- php 分析Session无效的原因
Session在开发中是非常重要的一个数据存储变量了,它可以实现不同页面之间的传值了,下面我们来为各位介绍在使用Session时碰到过期无效的一些问题吧. PHP开发过程中,可能有朋友经常会遇到Ses ...
- 配置Git Extension免密码发布代码到CSDN
配置Git Extension免密码发布代码到CSDN [本文默认大家安装了Git以及Git Extension] 今天花费了许多的时间处理这个问题,希望能给大家节约时间.闲话少说:使用ssh验证来p ...
- 《Head First 设计模式》ch.3 装饰(Decorator)模式
设计原则 类应该对修改关闭,对扩展开放(开放-关闭原则).在每个地方使用开放-关闭原则是一种浪费,也没有必要,因为这通常会引入新的抽象层次,增加代码复杂度.需要把注意力集中在设计中最有可能改变的地方. ...
- Redis集群搭建&访问
集群搭建步骤 1.创建多个节点: 2.为每个节点指派槽,并将多个节点连接起来,组成一个集群: 3.当集群数据库的16384个槽都有节点在处理时,集群进入上线状态: 要求:搭建一个包含6个节点的Redi ...