Dove metti la "funzione principale" di un'app Python?

3

Supponi di sviluppare un'applicazione standalone Python (non una libreria).

  1. Lo faresti un pacchetto Python? O solo file uno accanto all'altro?
  2. Se vuoi renderlo un pacchetto, quale sarebbe il file "punto di partenza" (dove viene eseguita la prima riga di codice)? Il codice%? O un breve script di "avvio" al di fuori del pacchetto che chiama una funzione nel pacchetto?
posta Aviv Cohn 16.10.2016 - 15:57
fonte

1 risposta

4

Se l'intera applicazione si inserisce in un singolo file, questa è la soluzione più semplice.

Altrimenti, è meglio creare un pacchetto completo. Quando crei un file setup.py basato su setuptools, puoi definire vari punti di inserimento che dovrebbe essere installato come script. Tuttavia, questi punti di accesso si riferiscono a funzioni, non a file.

Invece di eseguire uno script con Python ( python path/to/script.py args... ), puoi anche eseguire un modulo o un pacchetto: python -m example.package args... . Per i moduli (ad esempio i file Python), devi eseguire il controllo di if __name__ == '__main__' e inviarlo alla tua funzione principale. Per i pacchetti (cioè le directory con un file __init__.py ), devi creare un file __main__.py come punto di ingresso. Ha senso inserire l'argomento analizzando & codice di interfaccia utente qui.

Questo è particolarmente sensibile quando si aggiunge un'interfaccia a riga di comando a una libreria esistente. Tuttavia, è spesso elegante scrivere il comportamento centrale di un'applicazione come libreria e quindi avvolgere quella libreria con una semplice interfaccia utente. In particolare, questa architettura stratificata rende più semplice il test delle unità.

    
risposta data 16.10.2016 - 17:03
fonte