• [原]打造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.7/bin/python2.7 -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
  • 相关阅读:
    Java链栈
    Java链栈
    java实现顺序栈
    java实现顺序栈
    求两个数的最大公约数
    求两个数的最大公约数
    一张图瞬间让你明白原型链结构
    前端面试题
    javascript学习中自己对作用域和作用域链理解
    关于javascript中静态成员和实例成员的详细解释
  • 原文地址:https://www.cnblogs.com/titanjf/p/pythhon_environment.html
Copyright © 2020-2023  润新知