­

python中使用tab補全

要能夠使用import tab,最主要的是要有readline模組。默認python2.6雖然沒有裝tab模組,但是裝了readline模組的。如下:

[root@90-163 robin]# python2.6 Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22) [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import tab Traceback (most recent call last):   File "<stdin>", line 1, in <module> ImportError: No module named tab >>> import readline

>>>

而python2.7默認tab模組和readline模組都沒有安裝

[root@90-163 robin]# python Python 2.7.5 (default, Apr 16 2015, 15:21:18) [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import tab Traceback (most recent call last):   File "<stdin>", line 1, in <module> ImportError: No module named tab >>> import readline Traceback (most recent call last):   File "<stdin>", line 1, in <module> ImportError: No module named readline

python2.6能夠import readline成功的原因是因為有這個模組:/usr/lib64/python2.6/lib-dynload/readline.so (默認安裝就有的),python2.7.5不能import readline成功的原因就是沒有這個模組。所以將這個模組cp到python2.7的相關目錄下既可以了。操作如下:

[root@90-163 lib-dynload]# cp  /usr/lib64/python2.6/lib-dynload/readline.so /usr/local/lib/python2.7/lib-dynload/ [root@90-163 lib-dynload]# python Python 2.7.5 (default, Apr 16 2015, 15:21:18) [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import readline >>> 

然後在/usr/local/lib/python2.7/site-packages 添加一個tab.py文件即可使用import tab,內容如下;

[root@90-163 site-packages]# pwd /usr/local/lib/python2.7/site-packages [root@90-163 site-packages]# cat tab.py

try:     import readline except ImportError:     print("Module readline not available.")

else:     import rlcompleter     readline.parse_and_bind("tab: complete")

進行測試:

>>> import readline >>> import tab >>> import os >>> os.w os.wait(     os.wait3(    os.wait4(    os.waitpid(  os.walk(     os.write(