Tag Archive: python

12月 31st, 2017

CentOS 7 默认的python版本是python2.7.5。因为yum依赖于默认的python版本的缘由,所以要先保留默认版本,并修改yum文件头部后,才能开始安装更新python2和python3两个最新版本。(python2和python3共存)

一. 保留默认python版本2.7.5,并修改yum头部,保持yum对默认版本python2.7.5的依赖

1.su root  # 获取root权限

2.mv /usr/bin/python2.7 /usr/bin/python2.7.5  # 保留默认版本python为python2.7.5

ln -s /usr/bin/python2.7.5 /usr/local/bin/python2.7.5  # 创建软连接
3.ll /usr/bin/yum*  # 查看/usr/bin/目录下所有yum文件(7个)头部

4.vi /usr/bin/yum*  # 修改/usr/bin/目录下所有yum文件(7个)头部

#!/usr/bin/python —> #!/usr/bin/python2.7.5

5.vi /usr/libexec/urlgrabber-ext-down  # 修改/usr/libexec/目录下 urlgrabber-ext-down头部

#!/usr/bin/python —> #!/usr/bin/python2.7.5

二. 安装最新版python2.7.13和python3.6.2(python2和python3共存,修改后默认版本为python3.6.2)

准备工作:

1. 安装wget命令(可以在线下载安装包的命令)

yum -y install wget

2. 准备编译环境

yum groupinstall ‘Development Tools’
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel
3. 下载并安装最新版本的python2和python3的tgz压缩文件

https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz
https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz

开始安装:

1. 进入下载目录:

cd /usr/local/src

2. 下载并安装最新版本python2:
wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz
tar zxvf Python-2.7.13.tgz
cd Python-2.7.13
./configure
make all
make install
make clean
make distclean
rm -rf /usr/bin/python
rm -rf /usr/bin/python2
rm -rf /usr/bin/python2.7
ln -s /usr/local/bin/python2.7 /usr/bin/python
ln -s /usr/local/bin/python2.7 /usr/bin/python2
ln -s /usr/local/bin/python2.7 /usr/bin/python2.7
/usr/bin/python -V
/usr/bin/python2 -V
/usr/bin/python2.7 -V
rm -rf /usr/local/bin/python
rm -rf /usr/local/bin/python2
ln -s /usr/local/bin/python2.7 /usr/local/bin/python
ln -s /usr/local/bin/python2.7 /usr/local/bin/python2
python -V
python2 -V
python2.7 -V

3. 下载并安装最新版本python3:
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
tar zxvf Python-3.6.2.tgz
cd Python-3.6.2
./configure
make all
make install
make clean
make distclean
rm -rf /usr/bin/python
rm -rf /usr/bin/python3
rm -rf /usr/bin/python3.6
ln -s /usr/local/bin/python3.6 /usr/bin/python
ln -s /usr/local/bin/python3.6 /usr/bin/python3
ln -s /usr/local/bin/python3.6 /usr/bin/python3.6
/usr/bin/python -V
/usr/bin/python3 -V
/usr/bin/python3.6 -V
rm -rf /usr/local/bin/python
rm -rf /usr/local/bin/python3
ln -s /usr/local/bin/python3.6 /usr/local/bin/python
ln -s /usr/local/bin/python3.6 /usr/local/bin/python3
python -V
python3 -V
python3.6 -V

TAGS:
10月 30th, 2017
首先你要了解一下Python之禅,一行代码输出“The Zen of Python”:

python -c “import this”
“””
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea — let’s do more of those!
“””

从“The Zen of Python”也能看出,Python倡导Beautiful、Explicit、Simple等原则,当然我们接下来要介绍的一行Python能实现哪些好玩的功能,可能和Explicit原则相违背。

如果你有其他这方面的小例子,也欢迎评论,我会加到文章中,文章也许会长期更新。
(1)一行代码启动一个Web服务

python -m SimpleHTTPServer 8080 # python2
python3 -m http.server 8080 # python3

(2)一行代码实现变量值互换

a, b = 1, 2; a, b = b, a
(3)一行代码解决FizzBuzz问题:
FizzBuzz问题:打印数字1到100, 3的倍数打印“Fizz”, 5的倍数打印“Buzz”, 既是3又是5的倍数的打印“FizzBuzz”

for x in range(1, 101): print(“fizz”[x % 3 * 4:]+”buzz”[x % 5 * 4:] or x)

(4)一行代码输出特定字符”Love”拼成的心形

print(‘\n’.join([”.join([(‘Love'[(x-y) % len(‘Love’)] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 <= 0 else ‘ ‘) for x in range(-30, 30)]) for y in range(30, -30, -1)]))

(5)一行代码输出Mandelbrot图像
Mandelbrot图像:图像中的每个位置都对应于公式N=x+y*i中的一个复数

print(‘\n’.join([”.join([‘*’if abs((lambda a: lambda z, c, n: a(a, z, c, n))(lambda s, z, c, n: z if n == 0 else s(s, z*z+c, c, n-1))(0, 0.02*x+0.05j*y, 40)) < 2 else ‘ ‘ for x in range(-80, 20)]) for y in range(-20, 20)]))

(6)一行代码打印九九乘法表

print(‘\n’.join([‘ ‘.join([‘%s*%s=%-2s’ % (y, x, x*y) for y in range(1, x+1)]) for x in range(1, 10)]))

(7)一行代码计算出1-100之间的素数(两个版本)

print(‘ ‘.join([str(item) for item in filter(lambda x: not [x % i for i in range(2, x) if x % i == 0], range(2, 101))]))
print(‘ ‘.join([str(item) for item in filter(lambda x: all(map(lambda p: x % p != 0, range(2, x))), range(2, 101))]))

(8)一行代码输出斐波那契数列

print([x[0] for x in [(a[0], a.append([a[1], a[0]+a[1]])) for a in ([[1, 1]], ) for i in range(30)]])

(9)一行代码实现快排算法

    • qsort = lambda arr: len(arr) > 1 and qsort(list(filter(lambda x: x <= arr[0], arr[1:]))) + arr[0:1] + qsort(list(filter(lambda x: x > arr[0], arr[1:]))) or arr

(10)一行代码解决八皇后问题

  • [__import__(‘sys’).stdout.write(‘\n’.join(‘.’ * i + ‘Q’ + ‘.’ * (8-i-1) for i in vec) + “\n========\n”) for vec in __import__(‘itertools’).permutations(range(8)) if 8 == len(set(vec+i for i in range(8))) == len(set(vec-i for i in range(8)))]


(11)一行代码实现数组的flatten功能: 将多维数组转化为一维

  • flatten = lambda x: [y for l in x for y in flatten(l)] if isinstance(x, list) else [x]


(12)一行代码实现list, 有点类似与上个功能的反功能

  • array = lambda x: [x[i:i+3] for i in range(0, len(x), 3)]


(13)一行代码实现求解2的1000次方的各位数之和

  • print(sum(map(int, str(2**1000))))

 

TAGS:
8月 27th, 2017

1、环境准备

主机名 IP 系统 Python版本
Python-01 192.168.10.9 CentOS release 6.9 (Final) 3.5.4

参考:https://www.shiyanlou.com/courses/370/labs/1191/document

2、原理

字符画是一系列字符的组合,可以把字符看作是比较大块的像素,一个字符能表现一种颜色(暂且这么理解吧),字符的种类越多,可以表现的颜色也越多,图片也会更有层次感。

灰度值指范围一般从0到255,白色为255,黑色为0,故黑白图片也称灰度图像。

任何颜色都由红、绿、蓝三基色组成,假如原来某点的颜色为RGB(R,G,B),本次实验可以用以下公式来转换灰度:

1
gray = 0.2126 * + 0.7152 * + 0.0722 * b

3、实验

本次实验的核心是pillow库的Image模块和argparse模块。

3.1 图像处理库pillow

Pillow是Python里的图像处理库,支持Python3.X,提供了广泛的文件格式支持和强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作等。

Image类使用说明参考:http://pillow.readthedocs.io/en/latest/reference/Image.html

3.2 安装pillow库

直接用Python3自带的pip安装即可:

1
pip install pillow

widonws端可以用以下命令安装:

1
python3 -m pip install pillow

3.3 argparse模块

argparse模块使编写用户友好的命令行界面变得更容易。程序只需定义好它要求的参数,然后argparse将负责如何从sys.argv中解析出这些参数。argparse模块还会自动生成帮助和使用信息并且当用户赋给程序非法的参数时产生错误信息。

3.3.1 ArgumentParser对象

add_argument()方法必须知道期望的是可选参数,例如-o 或者–output参数用来设置输出文件:

1
2
parser = argparse.ArgumentParser()
parser.add_argument('-o''--output')

add_argument()的default关键字参数,其默认值为None,指出如果命令行参数没有出现时它们应该是什么值,还可以设定其类型type,例如设定输出字符画的宽:

1
parser.add_argument('--width'type = int, default = 80)

3.4 准备图片

wKioL1mfj2mRI9J2AAB09TbRWOY101.jpg

3.5 源码

源码在Windows、CentOS和Ubuntu环境均验证成功。

1
vim test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/env python3
from PIL import Image
import argparse
# 命令行输入参数处理
parser = argparse.ArgumentParser()
parser.add_argument('file')     # 输入文件
parser.add_argument('-o''--output')   # 输出文件
# 输出字符画宽,默认值为80
parser.add_argument('--width'type = int, default = 80)
# 输出字符画高,默认值为80
parser.add_argument('--height'type = int, default = 80
# 获取参数
args = parser.parse_args()
IMG = args.file
WIDTH = args.width
HEIGHT = args.height
OUTPUT = args.output
# 灰度值小(暗)的用列表开头的符号,灰度值大(亮)的用列表末尾的符号。
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
# 将256灰度映射到列表的70个字符上
def get_char(r,g,b,alpha = 256):
    if alpha == 0:
        return ' '
    length = len(ascii_char)
    gray = int(0.2126 * + 0.7152 * + 0.0722 * b)
    unit = (256.0 + 1)/length
    return ascii_char[int(gray/unit)]
if __name__ == '__main__':
    im = Image.open(IMG)
    im = im.resize((WIDTH,HEIGHT), Image.NEAREST)
    txt = ""
    for in range(HEIGHT):
        for in range(WIDTH):
            txt += get_char(*im.getpixel((j,i)))
        txt += '\n'
    print(txt)
    # 字符画输出到文件
    if OUTPUT:
        with open(OUTPUT,'w') as f:
            f.write(txt)
    else:
        with open("output.txt",'w') as f:
            f.write(txt)

3.6 运行结果

1
python3 test.py timg.jpg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
                                      ....  ..
                           ......lB&],,,,,,,+Mp'...
                            ..8c,,,,,,,,,,,,,,,,M"`
                        . '&<,,,,,,,,,,,,,,,,,,,,,!U .
                       '+aI,,,,,,,,,,,,,,,,,,,,,,,,;|f.'
                      'ox:,,,,,,,,,,,,,,,,,,,,,,,,,,,">o\..
                     o",:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"::c@.
                  . &:"I,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,f^,,lJ.
                  ^>";,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,`&
                .';",&,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"!",,,:}.
                ^,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#l,,,":]
               '",,,,^,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;!,,,,,Ix..
              ',,,,,m,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M!,,,,,,Z`
             'Z,,,,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,l!,,,,,,^.`
           ..h:,,,,"*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ii:,,,,,,}.
            ti,,,,,:[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,k!,,,,,,,M
           .I,,,,,,,:",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,&!,,,,,,,,v
           k,,,,,,,l:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,_!:,,,,,,,"'
          Y:,,,,,,,!:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,l!l,,,,,,,:#
         '[,,,,,,,,l:",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ii!,,,,,,,:0
       . o^,,,,,,,!l:,,,,,",,",,,,,,,,,,,,,,,,,,":lz(,,,",,;]!:,,,,,,,0&
       .`O,,,,,,,:!!",,,j**WWMW[,,,,,,,,,,,,,,,vMMMWMM8o,,,,{!;,,,,,,,0Z.
       .80,,,,,,,:!l:,,,8,,""":",,,,,,,,,,,,,,,M",:,:::I,,,,(!!,,,,,,"0QW
      .`00",,,,,:!l{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^?>!,,,,,,,00Q..
     .'W00",,,,,:!1*:",,,,::,,,,,,,,,,,",,,,,,,,,,,,,,,,,,,,^^!",,,,,"00Ou
     ..000",,,,,!I\JjmW;,",,,,,,,,,,,,-8^,,,,,,,,,,,,,,:,,&&,.`p;,,,,"000a.
      %000,,,,,,!)[nxxn*;:,,,,,,,,,,,,^,,,,,,,,,,,,,,,:Izunu#..'8I,,,"000O^
     .0000:,,,,;>}Mxxxxx8:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0rxxxj`   #l,,"0000B
     M0000,,,,,!1vnnxxxx\:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,vxxxxr@    ';",0000k
    .O0000I,,,!(bWxxxxxxf:,,,,,,,,,,,,:"",,,,,,,,,,,,:Ixxxxxxx'    'W,00000
    .00000},,;>a'uxxxxxx%",,,,,,,,,,,"%ujM;:,,,,,,,,,,/xxxxxxxW    . M00000,
    W00000n,,ip :xxxxxnt:,,,,!W:,,^#Mxnxxnn%C&M8WW;,,,"jxxxxunQ      ."q000o.
    000000J,-' .#xrxxxm;",,,,:;",:,"Mxxxnxv^:",":,",,,,Wnxxxv::&+    .`'800Z'
   !000000Qo ..#,,"8W^,,,,,,,,,,,,,,,Mnnxu8,,,,,,,,,,,,,,&hxB,,,,#''   . #0OJ
  .M0000QQ# .Wl,,,:o",,,,,,,,,,,,,,,,:&nx/;,,,,,,,,,,,,,,,,:<,,,,,J'       *M.
  `O000L*.. .,,,,,,;",,,,,,,,,,,,,,,,,,z*^,,,,,,,,,,,,,,,,,,M,,,,,,&.      .#.
  BQ00&`   .m,,,,,:Z,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,IZ,,,,,:.
  B#M..     :,,,,^#!:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,!:J,,,,,!.
           .",,,,;^ul!:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,":i)Cl,,,,l!.
        .  `>,,,,,":Yfi!!;,,,,,,,,,,,,,,,,,,,,,,,,,,::I!I8X!I,,,,,l!.
            ;!,,,,,,":{#WIl!!!!!I;:,""",::;IIl!i!!llf&&{11!;,,,,,!!r'
            Ll!,,,,,,:,"?(t]jq8&MWWWM&&&&&##M8*X1)(1()1ll!,,,,,,I!!f
             *l!:,,,,,,,,:"::l!<_+-][{{{11{{11{[_!:!!l!:,",,,,,:l!X.
             "B!!!;,,,,,,,,,,,,,","",,,,",,,",,,:,,",:,,,,:,,:!!!a..
            .. *l!!!!",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,!!!!i*.      .
                v!!!!!:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,li>!o
                .<*i!!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,l;` .
                  .jJI,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,!-
                    `I,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,!!
                    .I,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:! .
                    W!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,id
                  ..~!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,!#.
                   .I!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,!!
                  .+!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:i
                   %!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,iX
                   _!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,!%
                  .I;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"I
                  '!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,i..
                  Y!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,!;.
                 'M!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.
                . ?;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#.
                ..I:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:8.
                 .l,,,,,,,,,,,,,,,,,::::::::::::::::::::::::,!&.
                  -,,,,,,,,,,,,,,,,::::::::::::::::::::::::::lh.
                . #,,,,,,,,,,,,,,,,:::::::;:::;;:::;:::::::::l1.
                   ,,,,,,,,,,,,,,,,::::;;;;;;;;;:;;;;;;;;;;;!<
                  .*I::,,,,,,,,,,,,,,,;:;:;;;;;;;;;;;;;;;;;;:M
                    #~!;,:,,,,,:,:li!!!!li!!!!!!!!!;;;;;;;;;_
                     1M;>l>!!!ill!!!}##&W#W&&1>l>l!!!!!!I;Ik .
                    (>~((fk#oaC|)|))))))))))))(\(#oMC1<ao#xW
                    aC<!i!!!((((()()))))))))))))(()(\\)){)<!
                    \~+!!!i(())))))))))))))))))))))))(i!!!!&Q.
                    (aa!!@))()))))))))))())))))))))()){I!!M!!
                     ;|["'            .               )/&lt\
                       ...                            . .;..

当然,也可以调整默认参数,来缩小输出比例:

1
python3 test_img.py  --width 30 --height 30 timg.jpg

image

4、总结

熟悉了argparse模块和Image模块。argparse是Python用于解析命令行参数和选项的标准模块,举例:

1
2
3
4
5
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo")
args = parser.parse_args()
print args.echo
1
2
$ python xx.py test1
test1
TAGS:
5月 27th, 2017

Python-mode 是一个 Vim 插件,它使你能够在 Vim 编辑器中更快的利用包括 pylint、rope、pydoc、pyflakes、pep8、autopep8、pep257 和 mccable 在内的各种库来写 Python 代码,这些库提供了一些编码功能,比如静态分析、特征重构、折叠、补全和文档等。

 

这个插件包含了所有你在 Vim 编辑器中可以用来开发 Python 应用的特性。

Python-mode 的特性

它包含下面这些值得一提的特性:

  • 支持 Python 2.6+ 至 Python 3.2 版本
  • 语法高亮
  • 提供 virtualenv 支持
  • 支持 Python 式折叠
  • 提供增强的 Python 缩进
  • 能够在 Vim 中运行 Python 代码
  • 能够添加/删除断点
  • 支持 Python 代码的快捷移动和操作
  • 能够在运行的同时检查代码(pylint、pyflakes、pylama ……)
  • 支持自动修复 PEP8 错误
  • 允许在 Python 文档中进行搜索
  • 支持代码重构
  • 支持强代码补全
  • 支持定义跳转

在这篇教程中,我将阐述如何在 Linux 中为 Vim 安装设置 Python-mode,从而在 Vim 编辑器中开发 Python 应用。

如何在 Linux 系统中为 Vim 安装 Python-mode

首先安装 Pathogen (它使得安装插件超级简单,并且运行文件位于私有目录中),从而更加容易的安装 Python-mode

运行下面的命令来获取 pathogen.vim 文件和它需要的目录:

  1. # mkdir -p ~/.vim/autoload ~/.vim/bundle && \
  2. # curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

然后把下面这些内容加入 ~/.vimrc 文件中:

  1. execute pathogen#infect()
  2. syntax on
  3. filetype plugin indent on

安装好 pathogen 以后,你可以像下面这样把 Python-mode 插件放入 ~/.vim/bunble 目录中:

  1. # cd ~/.vim/bundle
  2. # git clone https://github.com/klen/python-mode.git

然后像下面这样在 Vim 中重建 helptags

  1. :helptags

你需要启用 filetype-plugin:help filetype-plugin-on)和 filetype-indent:help filetype-indent-on)来使用 Python-mode 。

在 Debian 和 Ubuntu 中安装 Python-mode

另一种在 Debian 和 Ubuntu 中安装 Python-mode 的方法是使用 PPA,就像下面这样

  1. $ sudo add-apt-repository https://klen.github.io/python-mode/deb main
  2. $ sudo apt-get update
  3. $ sudo apt-get install vim-python-mode

如果你遇到消息:“The following signatures couldn’t be verified because the public key is not available”,请运行下面的命令:

  1. $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B5DF65307000E266

现在,使用 vim-addon-manager 启用 Python-mode:

  1. $ sudo apt install vim-addon-manager
  2. $ vim-addons install python-mode

在 Linux 中定制 Python-mode

如果想覆盖默认键位绑定,可以在 .vimrc 文件中重定义它们,比如:

  1. " Override go-to.definition key shortcut to Ctrl-]
  2. let g:pymode_rope_goto_definition_bind = "<C-]>"
  3. " Override run current python file key shortcut to Ctrl-Shift-e
  4. let g:pymode_run_bind = "<C-S-e>"
  5. " Override view python doc key shortcut to Ctrl-Shift-d
  6. let g:pymode_doc_bind = "<C-S-d>"

注意,默认情况下, Python-mode 使用 Python 2 进行语法检查。你可以在 .vimrc 文件中加入下面这行内容从而启动 Python 3 语法检查。

  1. let g:pymode_python = 'python3'
TAGS: ,
5月 9th, 2017

假设你已经安装好了Python, 那么在Linux命令行输入:

$python

将直接进入python。然后在命令行提示符>>>后面输入:

>>>print(‘Hello World!’)

可以看到,随后在屏幕上输出:

Hello World!

print是一个常用函数,其功能就是输出括号中得字符串。

(在Python 2.x中,print还可以是一个关键字,可写成print ‘Hello World!’,但这在3.x中行不通 )

 

写一段小程序

另一个使用Python的方法,是写一个Python程序。用文本编辑器写一个.py结尾的文件,比如说hello.py

hello.py中写入如下,并保存:

print('Hello World!')

退出文本编辑器,然后在命令行输入:

$python hello.py

来运行hello.py。可以看到Python随后输出

Hello World!

 

脚本

我们还可以把Python程序hello.py改成一个可执行的脚本,直接执行:

#!/usr/bin/env python
print('Hello World!')

 

需要修改上面程序的权限为可执行:

chmod 755 hello.py

 

然后再命令行中,输入

./hello.py

就可以直接运行了

 

总结

print

命令行模式: 运行Python,在命令行输入命令并执行。

程序模式: 写一段Python程序并运行。

作者:Vamei 出处:http://www.cnblogs.com/vamei
TAGS:
4月 30th, 2017

升级Python后yum不可用的解决方案

在Centos官网上查到了一篇文档,方法如下。

首先找到你安装Centos的光盘或者ISO文件,只要系统版本一样即可。拷贝如下文件到系统某目录中:

python-2.6.6-36.el6.x86_64.rpm

python-urlgrabber-3.9.1-8.el6.noarch.rpm

python-devel-2.6.6-36.el6.x86_64.rpm

python-libs-2.6.6-36.el6.x86_64.rpm

yum-3.2.29-40.el6.centos.noarch.rpm

具体版本号,根据你系统盘或者ISO提供为准。

rpm -Uvh –replacepkgs *.rpm

#出现如下提示

Preparing… ########################################### [100%]

1:python-libs ########################################### [ 20%]

2:python ########################################### [ 40%]

3:python-urlgrabber ########################################### [ 60%]

4:yum ########################################### [ 80%]

5:python-devel ########################################### [100%]

执行yum命令,你熟悉的界面出现了~~

php安装

rpm -qa | grep php | xargs rpm -e –nodeps

yum install php php-mysql php-common php-gd php-mbstring php-mcrypt php-devel php-xml

semanage port -l|grep http
semanage port -a -t http_port_t -p tcp 9910   当开启selinux,则需要执行这个命令,如果selinux关闭,则不用执行这个命令增加端口进去。

/etc/init.d/httpd start

TAGS: ,
4月 18th, 2017

目前学习python3已经成为主流,对于Python3的安装,这里做一下简单的总结,在安装过程中有有一些小坑,分享出来供大家参考。
本人使用的系统是:CentOS 7.2.1511,最小化的安装方式,安装Python3.5版本。

下载安装Python3
1、 先在系统上安装必要的编译环境和安装工具:

yum install wget gcc gcc+

2、 下载官方的python3.5.3源码包

wget  https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tgz

3、 解压源码包,并安装

tar xvf Python-3.5.3.tgz
cd Python-3.5.3./configure
make
make install

4、 安装完成之后,此时执行python3的命令就可以查看当前的Python版本

[root@localhost ~]# python3Python 3.5.3 (default, Apr  4 2017, 16:32:58)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type “help”, “copyright”, “credits” or “license” for more information.

>>>解决Python3无法使用回退键
在安装了python3之后,如果要使用Python3的控制台界面,默认情况下是无法使用回退键和方向键移动光标的。在使用方向键和回退键控制光标时,回出现如下情况:

>>> exit()^H^H^H^H^[[C^[[D

如果只需要使用回退键,可以先按ctrl键,然后按回退键删除,但是要使用左右的方向键来移动光标的话就会出现乱码。出现这个问题的原因是在python shell中,这些按键指令并没有被转化为具体的操作,而实现按键功能指令的就是readline.

要解决这个问题我们需要安装对应的readline工具。

yum install readline-devel -y

然后按照之前的方式,重新编译安装 即可:)

TAGS: ,
8月 8th, 2016

1. 从Python官网到获取Python3的包, 切换到目录/usr/local/src

#wget  https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tar.x

2. 使用命令如下命令进行解压缩:

xz -d Python-3.5.1.tar.xz
tar -xf Python-3.5.1.tar

3. 在/usr/local路径下创建目录–python3.5, 为第4步的安装目录

$mkdir /usr/local/python3.5

4. 编译安装(会自动安装pip-7.1.2)

$cd /usr/local/src/Python-3.5.1
#./configure –prefix=/usr/local/python3.5
#make all
#make install
#make clean
#make distclean

5. 进入安装的绝对路径,检查是否安装成功

$ /usr/local/python3.5/bin/python3.5 -V
Python 3.5.1

6.查看环境变量,启动python时默认按照PATH的顺序进行查找,在/usr/bin中的python此时为Python2.6的。

$echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/gordon/bin

7.修改软连接,启动python时指向python3.5

备份python
mv /usr/bin/python /usr/bin/python2.6.6

2 修改软连接
sudo ln -s /usr/local/python3.5/bin/python3 /usr/bin/python

8. 验证默认是否启动python3.5

$ python -V
Python 3.5.1

TAGS: ,