Python

From Sigmon

Jump to: navigation, search

OptionParser

Contents

Tab Complete interpreter (simple)

http://www.razorvine.net/blog/user/irmen/article/2004-11-22/17

export PYTHONSTARTUP=$HOME/.pystartup" >> ~/.pythonrc
# ~/.pythonrc
# enable syntax completion
try:
    import readline
except ImportError:
    print "Module readline not available."
else:
    import rlcompleter
    readline.parse_and_bind("tab: complete")

Tab Complete interpreter (fancy)

http://www.razorvine.net/blog/user/irmen/article/2004-11-22/17

echo "export PYTHONSTARTUP=$HOME/.pystartup" >> ~/.bashrc

~/.pystartup

# Add auto-completion and a stored history file of commands to your Python
# interactive interpreter. Requires Python 2.0+, readline. Autocomplete is
# bound to the Esc key by default (you can change it - see readline docs).
#
# Store the file in ~/.pystartup, and set an environment variable to point
# to it, e.g. "export PYTHONSTARTUP=/max/home/itamar/.pystartup" in bash.
#
# Note that PYTHONSTARTUP does *not* expand "~", so you have to put in the
# full path to your home directory.

import atexit
import os
import readline
import rlcompleter

historyPath = os.path.expanduser("~/.pyhistory")
historyTmp = os.path.expanduser("~/.pyhisttmp.py")

endMarkerStr= "# # # histDUMP # # #"

saveMacro= "import readline; readline.write_history_file('"+historyTmp+"'); \
    print '####>>>>>>>>>>'; print ''.join(filter(lambda lineP: \
    not lineP.strip().endswith('"+endMarkerStr+"'),  \
    open('"+historyTmp+"').readlines())[:])+'####<<<<<<<<<<'"+endMarkerStr

readline.parse_and_bind('tab: complete')
readline.parse_and_bind('\C-w: "'+saveMacro+'"')

def save_history(historyPath=historyPath, endMarkerStr=endMarkerStr):
    import readline
    readline.write_history_file(historyPath)
    # Now filter out those line containing the saveMacro
    lines= filter(lambda lineP, endMarkerStr=endMarkerStr:
                      not lineP.strip().endswith(endMarkerStr), open(historyPath).readlines())
    open(historyPath, 'w+').write(''.join(lines))

if os.path.exists(historyPath):
    readline.read_history_file(historyPath)

atexit.register(save_history)

del os, atexit, readline, rlcompleter, save_history, historyPath
del historyTmp, endMarkerStr, saveMacro

Packaging

Packaging into python module

[root@nfs python-nodetraq]$ cat setup.py 

from distutils.core import setup
setup(name='nodetraq', version='1.0', py_modules=['nodetraq'], )

Setup & Install


[root@nfs python-nodetraq]$ python setup.py install
running install
running build
running build_py
running install_lib
creating /usr/lib/python2.3/site-packages/.svn
creating /usr/lib/python2.3/site-packages/.svn/prop-base
creating /usr/lib/python2.3/site-packages/.svn/tmp
creating /usr/lib/python2.3/site-packages/.svn/tmp/prop-base
creating /usr/lib/python2.3/site-packages/.svn/tmp/text-base
creating /usr/lib/python2.3/site-packages/.svn/tmp/props
copying build/lib/.svn/entries -> /usr/lib/python2.3/site-packages/.svn
copying build/lib/.svn/format -> /usr/lib/python2.3/site-packages/.svn
creating /usr/lib/python2.3/site-packages/.svn/text-base
copying build/lib/.svn/text-base/nodetraq.py.svn-base -> /usr/lib/python2.3/site-packages/.svn/text-base
creating /usr/lib/python2.3/site-packages/.svn/props
copying build/lib/nodetraq.py -> /usr/lib/python2.3/site-packages
byte-compiling /usr/lib/python2.3/site-packages/nodetraq.py to nodetraq.pyc

Packaging into rpm

[root@nfs python-nodetraq]$ python setup.py bdist_rpm
..... snip .....
oving build/bdist.linux-x86_64/rpm/SRPMS/nodetraq-1.0-1.src.rpm -> dist
moving build/bdist.linux-x86_64/rpm/RPMS/noarch/nodetraq-1.0-1.noarch.rpm -> dist

Personal tools