Distribuzione del singolo file python: modulo o pacchetto?

22

Supponiamo di avere una funzione o classe python utile (o qualsiasi altra cosa) chiamata useful_thing che esiste in un singolo file. Esistono essenzialmente due modi per organizzare l'albero dei sorgenti. Il primo modo utilizza un singolo modulo:

- setup.py
- README.rst
- ...etc...
- foo.py

dove useful_thing è definita in foo.py . La seconda strategia è creare un pacchetto:

- setup.py
- README.rst
- ...etc...
- foo
|-module.py
|-__init__.py

dove useful_thing è definita in module.py . Nel caso del pacchetto __init__.py sarà simile a questo

from foo.module import useful_thing

così che in entrambi i casi puoi fare from foo import useful_thing .

Domanda: quale modo è preferito e perché?

EDIT: Dato che l'utente gnat dice che questa domanda è mal formata, aggiungerò che il tutorial ufficiale sul packaging di Python non sembra commentare quale dei metodi descritti sopra è il preferito. Sono esplicitamente non a fornire il mio elenco personale di pro e contro perché sono interessato a sapere se esiste un metodo preferito dalla community, non a generare una discussione sui pro / contro:)

    
posta DanielSank 04.06.2014 - 21:01
fonte

1 risposta

14

Fai la cosa più semplice che lavori per te .

Per un modulo di una funzione , non è assolutamente necessario creare un pacchetto. I pacchetti sono utili per creare uno spazio dei nomi aggiuntivo e / o per organizzare il tuo codice su più moduli.

I moduli json e unittest nella libreria standard Python sono in realtà dei pacchetti, ad esempio, per scopi di organizzazione del codice. Ma è perfettamente corretto lasciare il codice che attualmente vive in un solo file python, come un modulo.

Se vuoi esempi:

Per un buon esempio di progetti che fanno davvero un uso eccellente dei pacchetti, guarda:

Non esiste una raccomandazione "ufficiale"; entrambe le opzioni sono completamente valide.

    
risposta data 04.06.2014 - 21:30
fonte

Leggi altre domande sui tag