Sto cercando di impacchettare un modulo Python per pip, seguendo la guida qui .
Un'area su cui vorrei ricevere un feedback è le best practice o le convenzioni per rendere configurabile il mio modulo. Il modulo è una libreria per comunicare con i servizi RESTful federati / datastore locali e lo usiamo sia come libreria da riga di comando che come app di Django. Quindi mi piacerebbe che fosse configurabile manualmente e configurabile dal file settings.py di Django.
Il nostro metodo attuale è orribile: fa affidamento su una serie di file settings.py all'interno della libreria, che vengono sovrascritti ogni volta che eseguiamo il pull da git, non modificabili durante il runtime, ecc.
La mia idea di soluzione è racchiudere l'intera libreria nella sua classe e, nel metodo __init__
, fare qualcosa del tipo:
try:
from django.conf import settings
self._remote_host = settings.REMOTE_HOST
except:
self._remote_host = DEFAULT_HOST
Ma sembra che si occupi solo di Django e sembra complicato - e se qualcuno volesse usare la nostra libreria con Flask o qualcos'altro? C'è un modo più universale per rendere un modulo Python configurabile da strumenti esterni e avere un valore predefinito? O è una causa persa, e dovrei limitarmi alla configurazione su init via argomenti?