2012-11-23 48 views

回答

2

Babel project提供了setup.py文件使用多個命令。

您需要定義與命令的distutils.commands切入點;例如,從Babel setup.py file

entry_points = """ 
[distutils.commands] 
compile_catalog = babel.messages.frontend:compile_catalog 
extract_messages = babel.messages.frontend:extract_messages 
init_catalog = babel.messages.frontend:init_catalog 
update_catalog = babel.messages.frontend:update_catalog 
""" 

其中額外命令然後可作爲python setup.py commandname

的入口點指向的from distutils.cmd import Command子類。再次從巴別實施例中,從babel.messages.frontend module

from distutils.cmd import Command 
from distutils.errors import DistutilsOptionError 


class compile_catalog(Command): 
    """Catalog compilation command for use in ``setup.py`` scripts.""" 

    # Description shown in setup.py --help-commands 
    description = 'compile message catalogs to binary MO files' 
    # Options available for this command, tuples of ('longoption', 'shortoption', 'help') 
    # If the longoption name ends in a `=` it takes an argument 
    user_options = [ 
     ('domain=', 'D', 
     "domain of PO file (default 'messages')"), 
     ('directory=', 'd', 
     'path to base directory containing the catalogs'), 
     # etc. 
    ] 
    # Options that don't take arguments, simple true or false options. 
    # These *must* be included in user_options too, but without a = equals sign 
    boolean_options = ['use-fuzzy', 'statistics'] 

    def initialize_options(self): 
     # Set a default for each of your user_options (long option name) 

    def finalize_options(self): 
     # verify the arguments and raise DistutilOptionError if needed 

    def run(self): 
     # Do your thing here.