Come strutturare un progetto in Python?
Questa ovviamente è una domanda molto comune, ma allo stesso tempo molto difficile, non esiste una risposta corretta.
Python non forza l’utilizzo di una determinata struttura, tuttavia ci sono alcune best practice che è possibile tenere a mente e alcune considerazioni che si possono (e spesso devono) fare.
Un Modulo in Python è un contenitore che racchiude tutte le vostre funzioni o classe che vi serve importare da un’altra parte in modo da riciclare quello che avete scritto.
Quando si lavora con i moduli e con altre librerie o codice la cosa più importante è prestare attenzione a due errori all’interno di un progetto
ModuleNotFoundError
: ovvero quando il file (modulo) che si cerca i importare non esiste o non è raggiungibileImportError
quando ci sono errori di circular importsUna cosa importante con Python è che quando si importa un modulo Python cercherà le dipendenze (i moduli che si vuole importare) in 3 posti:
PYTHONPATH
python ~/modulo/scripts/server.py
Python cercherà i moduli da importare all’interno di ~/modulo/scripts/
.python
o ipython
) verrà utilizzata la directory dove ci si trova al momento del lancio del comando.Un modo efficace per verificare i path dove python cercherà gli eventuali moduli è fare:
import sys
print(sys.path)
Se si ottiene ModuleNotFoundError
la prima cosa è provare a lanciare il comando sopra per verificare se contiene le directory che si vuole utilizzare e che dovrebbero essere lì.
In quel caso bisogna cercare di agire sugli import, sul PYTHONPATH
per includere le proprie directory oppure provare a fare sys.path.append("/module/scripts")
(è un po' un trick, ma potrebbe aiutare a risolvere la soluzione).