2009-12-11 3 views
6

Je suis en train d'empaqueter un module Python, et j'aimerais que les utilisateurs puissent construire le module avec des options personnalisées. Plus précisément, le paquet fera un peu de magie si vous lui fournissez certains exécutables qu'il peut utiliser. Idéalement, les utilisateurs exécuteraient setup.py install ou setup.py install --magic-doer=/path/to/executable. S'ils utilisaient la deuxième option, je définirais une variable quelque part dans le code, et partirais de là.Configuration personnalisée de Python setuptools

Est-ce possible avec le setuptools de Python? Si oui, comment puis-je le faire?

Répondre

6

Il semble que vous pouvez ... lire this.

Extrait de l'article:

Les commandes sont simple classe qui dérive de setuptools.Command, et définir certains éléments minimums, qui sont:

description: describe the command 
user_options: a list of options 
initialize_options(): called at startup 
finalize_options(): called at the end 
run(): called to run the command 

Le setuptools doc est encore empty about subclassing Command, mais une classe minimale ressemblera à ceci:

class MyCommand(Command): 
    """setuptools Command""" 
    description = "run my command" 
    user_options = tuple() 
    def initialize_options(self): 
     """init options""" 
     pass 

    def finalize_options(self): 
     """finalize options""" 
     pass 

    def run(self): 
     """runner""" 
     XXX DO THE JOB HERE 

La classe peut ensuite être crochet en tant que commande, en utilisant un point d'entrée dans son fichier setup.py:

setup(
    # ... 
    entry_points = { 
    "distutils.commands": [ 
    "my_command = mypackage.some_module:MyCommand"]} 
Questions connexes