configuración personalizada Python setuptools
Pregunta
Estoy envasado de un módulo de Python, y me gustaría que los usuarios puedan construir el módulo con algunas opciones de personalización. En concreto, el paquete va a hacer un poco de magia extra si usted le proporcione ciertos archivos ejecutables que se puede utilizar.
Lo ideal sería que los usuarios podrían ejecutar setup.py install
o setup.py install --magic-doer=/path/to/executable
. Si se utiliza la segunda opción, me gustaría establecer una variable en alguna parte del código, e ir de allí.
¿Es esto posible con setuptools
de Python? Si es así, ¿cómo lo hago?
Solución
parece que se puede leer ... este .
Extracto del artículo:
Los comandos son clase simple que se deriva de setuptools.Command, y definen algunos elementos mínimos, que son:
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
El doc setuptools sigue vacío sobre la subclasificación de comandos, sino una clase mínima debe tener este aspecto:
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 clase puede ser entonces gancho como un comando, utilizando un punto de entrada en el archivo setup.py:
setup(
# ...
entry_points = {
"distutils.commands": [
"my_command = mypackage.some_module:MyCommand"]}