话说上次给那台装CentOS 5的免费VPS升级了Python,这次我们继续来安装IPython。
一.IPython是什么
IPython是Python的交互式Shell,提供了代码自动补完,自动缩进,高亮显示,执行Shell命令等非常有用的特性。特别是它的代码补完功能,例如:在输入zlib.之后按下Tab键,IPython会列出zlib模块下所有的属性、方法和类
二.安装IPython
IPython的安装很简单,按照《升级CentOS的Python》 安装好Python和setuptools之后,我们直接用setuptools提供的easy_install命令就能自动安装好所需要的模块。在远程终端中执行下列命令:
easy_install install ipython
虽然现在IPython能用了,但由于缺少Python readline模块,它的代码自动补完,自动缩进,高亮显示这三个最有用的特性都不可用
看到它最上面的提示了吧:
WARNING: IPython History requires SQLite, your history will not be saved
WARNING: Readline services not available or not loaded.WARNING: The auto-indent feature requires the readline
换句话说,IPython这丫的现在就等于是个废物。好吧,我们来解决readline的问题。至于它提示缺少的SQLite模块,本来是Python的内置模块,但是由于我们当初编译Python时没有安装sqlite-devel,所以Python现在不支持这个库,不过这这几乎不影响我们的使用。
三.安装readline
先来安装编译Python readline所需要的readline-devel,执行:
yum install -y readline-devel
Tips:devel是Development的缩写。readline-devel包,包含了readline模块的申明和头文件等,给使用了readline模块的程序提供编译支持。前面提到的sqlite-devel、zlib-devel等,功能于此类同。
接着用easy_install安装Python的readline模块,执行:
easy_install readline
结果报错
可以看到,最后三行提示:
gcc: readline/libreadline.a: No such file or directory
gcc: readline/libhistory.a: No such file or directory
error: Setup script exited with error: command 'gcc' failed with exit status 1
我们已经安装了readline-devel,却提示找不到libreadline.a和libhistory.a,应该是路径有问题。执行下面的命令查看系统把readline-devel安装到了那儿
可以看到,libreadline.a和libhistory.a被安装到了/usr/lib/路径下,难怪找不到了。
下面我们来手动安装Python readline模块,依次执行下面的命令:
wget http://pypi.python.org/packages/source/r/readline/readline-6.2.4.1.tar.gz
tar zxvf readline-6.2.4.1.tar.gz
cd readline-6.2.4.1
然后找到setup.py文件中的这一段:
ext_modules=[
Extension(name="readline",
sources=["Modules/%s.x/readline.c" % (sys.version_info[0],)],
include_dirs=['.'],
define_macros=DEFINE_MACROS,
extra_compile_args=['-Wno-strict-prototypes'] + UNIVERSAL.split(),
extra_link_args=UNIVERSAL.split(),
extra_objects=['readline/libreadline.a', 'readline/libhistory.a'],
libraries=['ncurses']
),
],
将其中的:
extra_objects=['readline/libreadline.a', 'readline/libhistory.a'],
修改为:
extra_objects=['/usr/lib/libreadline.a', '/usr/lib/libhistory.a'],
接着执行:
python setup.py install
结果继续报错。
这次提示的是:
/usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1
汗,看样子今天还真是一波三折啊。百度了一下发现,原来是没有安装ncurses-devel。执行:
yum install -y ncurses-devel
接下来再次执行
python setup.py install
谢天谢地,终于安装成功了。
现在再来执行IPython,代码自动完成,自动缩进和高亮显示功能就全有了,如图七所示。和图二对比一下,是不是有了一种鸟枪换大炮的感觉啊。
来源:noanylove.com