2009-12-11 10 views
6

Ich paketieren ein Python-Modul, und ich möchte, dass Benutzer das Modul mit einigen benutzerdefinierten Optionen erstellen können. Insbesondere macht das Paket einige zusätzliche Magie, wenn Sie es mit bestimmten ausführbaren Dateien bereitstellen, die es verwenden kann.Python setuptools benutzerdefinierte Konfiguration

Im Idealfall würden Benutzer setup.py install oder setup.py install --magic-doer=/path/to/executable ausführen. Wenn sie die zweite Option verwenden würden, würde ich irgendwo im Code eine Variable setzen und von dort aus weitermachen.

Ist dies mit Pythons setuptools möglich? Wenn ja, wie mache ich das?

Antwort

6

Es scheint, dass Sie ... lesen können this.

Auszug aus dem Artikel:

Befehle sind einfache Klasse, die von setuptools.Command ableitet, und mindestens einige Elemente definieren, die da sind:

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 

Das Setuptools doc ist noch leer über subclassing Command, aber eine minimale Klasse wird wie folgt aussehen:

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 

Die Klasse kann dann Haken als ein Befehl sein, um einen Eintrittspunkt in seiner setup.py Datei mit:

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