Fork me on GitHub
Suzf  Blog

Archive Dev

Python 版本升级shell简略版

尽管Python3很早之前就出现了但是现在很多企业用的还是2.7居多 天朝系统版本CentOS居多 故以CentOS6为实验环境 Python 从 2.6 升级到 2.7 OoO
#!/bin/bash
# Desc: Python && pip upgrade
# Author: Jeffrey.su
# Mail: [email protected]
# Date:  Oct 09, 2014
# Home: http://suzf.net

DOWN_PATH=/usr/local/src
PY_VERSION=2.7.3
PY_BIN_NAME=python2.7
PY_OLD_VERSION=`python -V 2>&1 | awk '{print $2}'`


function prepare_work(){

  yum -y install zlib  openssl openssl-devel curl wget gcc patch ncurses-devel
  # yum install ipython 

}

function python_upgrade(){

  cd ${DOWN_PATH}
  wget -c https://www.python.org/ftp/python/${PY_VERSION}/Python-${PY_VERSION}.tgz
  tar zxf Python-${PY_VERSION}.tgz
  cd Python-${PY_VERSION}
  ./configure --prefix=/usr/local/Python${PY_VERSION} --enable-shared
  make && make install
  mv /usr/bin/python /usr/bin/python_${PY_OLD_VERSION}
  cp /usr/bin/yum{,.old} && sed -i s/python/python${PY_OLD_VERSION}/ /usr/bin/yum

  ln -s /usr/local/Python${PY_VERSION}/bin/${PY_BIN_NAME} /usr/bin/python

}

function pip_upgrade(){

  cd ${DOWN_PATH}
  curl -O https://pypi.python.org/packages/source/s/setuptools/setuptools-2.0.tar.gz
  tar zxf setuptools-2.0.tar.gz
  cd setuptools-2.0
  python setup.py build && python setup.py install


  cd ${DOWN_PATH}
  curl -O https://pypi.python.org/packages/source/p/pip/pip-7.1.2.tar.gz
  tar zxf pip-7.1.2.tar.gz     
  cd pip-7.1.2    
  python setup.py install
  mv /usr/bin/pip{,.old}  && ln -s /usr/local/Python${PY_VERSION}/bin/pip /usr/bin/pip
  pip install readline
}

 
prepare_work
python_upgrade
pip_upgrade

 

How-to: 使用 highcharts + MySQL 构建自己的简易网站监控系统

Highcharts 是一个用纯JavaScript编写的一个图表库。

Highcharts 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表

Highcharts 免费提供给个人学习、个人网站和非商业用途使用。

HighCharts 特性

  • 兼容性 - 支持所有主流浏览器和移动平台(android、iOS等)。
  • 多设备 - 支持多种设备,如手持设备 iPhone/iPad、平板等。
  • 免费使用 - 开源免费。
  • 轻量 - highcharts.js 内核库大小只有 35KB 左右。
  • 配置简单 - 使用 json 格式配置
  • 动态 - 可以在图表生成后修改。
  • 多维 - 支持多维图表
  • 配置提示工具 - 鼠标移动到图表的某一点上有提示信息。
  • 时间轴 - 可以精确到毫秒。
  • 导出 - 表格可导出为 PDF/ PNG/ JPG / SVG 格式
  • 输出 - 网页输出图表。
  • 可变焦 - 选中图表部分放大,近距离观察图表;
  • 外部数据 - 从服务器载入动态数据。
  • 文字旋转 - 支持在任意方向的标签旋转。

Flask_Faq : AttributeError: 'module' object has no attribute 'autoescape'

前些天从 "spider_net" 上找了一篇文章 , 大致就是利用 highcharts + flask + mysql 构建的一个简单的监控系统 ,
经过几番挣扎终于还是给捣持出来了 , 现在总结一下 , 分享给大家 . o_O

部分报错信息:

* Detected change in 'flask_web.py', reloading
* Restarting with reloader
X.X.X.X - - [11/Jun/2015 15:24:14] "GET / HTTP/1.1" 500 -
Traceback (most recent call last):
...
...
File "/usr/lib64/python2.6/site-packages/jinja2/utils.py", line 195, in import_string
return getattr(__import__(module, None, None, [obj]), obj)
AttributeError: 'module' object has no attribute 'autoescape'

解决办法:
yum install python-pip -y
pip install --upgrade jinja2

redhat 官方宣称这是一个bug , for more :
https://bugzilla.redhat.com/show_bug.cgi?id=799087

Python pip 简单使用说明

简单来说 pip 就是 Python 的一个包管理工具, 和 yum / apt-get 有异曲同工之妙 。
好了, 会到正文
~\(≧▽≦)/~

1、安装
# yum install python-pip -y

or

# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate
# tar -xzvf pip-1.5.4.tar.gz
# cd pip-1.5.4 && python setup.py install

# 升级
pip install --upgrade pip


2. 常用操作
# 安装
# pip install pkgname
# python2 -m pip install pkgname
# python3 -m pip install pkgname

# 卸载
# pip uninstall pkgname

# 升级
# pip install --upgrade pkgname

# 检测更新
# pip list --outdated

# 查看
# pip show --files pkgname

# 查看某个库的信息:
# pip show Jinja2

# 查看已经安装的库:
pip list    or   pip freze

3. FAQ :

ImportError No module named setuptools
请参考《ImportError No module named setuptools解决》

4. 参数说明
# pip -h
Usage:
pip [options]

Commands:
install 安装包.
uninstall 卸载包.
freeze 按着一定格式输出已安装包列表
list 列出已安装包.
show 显示包详细信息.
search 搜索包,类似yum里的search.
wheel Build wheels from your requirements.
zip 不推荐. Zip individual packages.
unzip 不推荐. Unzip individual packages.
bundle 不推荐. Create pybundles.
help 当前帮助.

General Options:
-h, --help 显示帮助.
-v, --verbose 更多的输出,最多可以使用3次
-V, --version 现实版本信息然后退出.
-q, --quiet 最少的输出.
--log-file 覆盖的方式记录verbose错误日志,默认文件:/root/.pip/pip.log
--log 不覆盖记录verbose输出的日志.
--proxy Specify a proxy in the form [user:passwd@]proxy.server:port.
--timeout 连接超时时间 (默认15秒).
--exists-action Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
--cert 证书.

Learn more : https://pypi.python.org/pypi/pip

Python pip 切换到阿里源

在使用 `pip` 安装 Python 模块的时候我们经常会遇到线面的错误

`ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org', port=443): Read timed out.
`

以至于安装模块的时候出现错误,之很让人不爽。

接下来我们将pip的源切换为阿里的源

cd $HOME
mkdir ~/.pip
cat > ~/.pip/pip.conf << EOF
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host = mirrors.aliyun.com
EOF

Python 设置终端显示颜色、粗体、下划线等效果

也许你希望在终端上输出一些带有颜色或者粗体、下划线等样式的信息,就像man中的那样,那么这篇文章将会起到些许作用。

在Linux终端中,使用转义序列来进行如上所述的显示,转义序列以ESC开头,即ASCII码下的\033,其格式为:
\033[显示方式;前景色;背景色m
显示方式、前景色、背景色至少一个存在即可。

其中:
显示方式:0(关闭所有效果),1(高亮),4(下划线),5(闪烁),7(反色),8(不可见)。
前景色以3开头,背景色以4开头,具体颜色值有:0(黑色),1(红色),2(绿色),3(黄色),4(蓝色),5(紫色),6(青色),7(白色)。即前景绿色为32,背景蓝色为44。

下面是Python程序编写的输出样式脚本:

#! /usr/bin/python                                                          
# -*- coding: utf-8
 
STYLE = {
        'fore': {
                'black': 30, 'red': 31, 'green': 32, 'yellow': 33,
                'blue': 34, 'purple': 35, 'cyan': 36, 'white': 37,
        },
        'back': {
                'black': 40, 'red': 41, 'green': 42, 'yellow': 43,
                'blue': 44, 'purple': 45, 'cyan': 46, 'white': 47,
        },
        'mode': {
                'bold': 1, 'underline': 4, 'blink': 5, 'invert': 7,
        },
        'default': {
                'end': 0,
        }
}
 
def use_style(string, mode='', fore='', back=''):
    mode = '%s' % STYLE['mode'][mode] if STYLE['mode'].has_key(mode) else ''
    fore = '%s' % STYLE['fore'][fore] if STYLE['fore'].has_key(fore) else ''
    back = '%s' % STYLE['back'][back] if STYLE['back'].has_key(back) else ''
    style = ';'.join([s for s in [mode, fore, back] if s])
    style = '\033[%sm' % style if style else ''
    end = '\033[%sm' % STYLE['default']['end'] if style else ''
    return '%s%s%s' % (style, string, end)
 
def test():
    print use_style('Normal')
    print use_style('Bold', mode='bold')
    print use_style('Underline & red text', mode='underline', fore='red')
    print use_style('Invert & green back', mode='reverse', back='green')
    print use_style('Black text & White back', fore='black', back='white')
 
if __name__ == '__main__':
    test()

其显示效果如下图所示:
Python终端色彩显示展示

转自 Pythoner