2009-11-23 10 views
7

Nella maggior parte degli ambienti di programmazione è chiaro come il codice sia distribuito in più parti e come tutto interagisca. In Python mi sembra di essere completamente perso.Come appare il layout di un'applicazione Python?

  • Come dovrebbe apparire il layout di un'applicazione Python?

    Attualmente ho:

     
    setup.py 
    application_name/ 
        __main__.py 
        __init__.py 
        views/ 
        controllers/ 
        model/ 
        resources/ <- images, videos, ... 
    
  • Come si fa a eseguire l'applicazione?

    io ho uno script corridore con il seguente contenuto

    #!/usr/bin/env python -m "application_name" 
    

    Se uno anche utilizzare __main__.py per questo scopo? È necessario uno script per runner?

  • Come si devono importare parti dell'applicazione? (Python 2,6)

    Per esempio in application_name/__main__.py

    from . import controllers.MainWindow 
    

Come si fa a Disposizione vostre applicazioni?

+1

Duplicate: http://stackoverflow.com/questions/171785/how-do-you-organize-python-modules, http://stackoverflow.com/questions/ 527919/how-to-correttamente-organiz-a-package-module-dependency-tree, http://stackoverflow.com/questions/501945/how-to-modularize-a-python-application –

risposta

5

Ci sono molte parti di questa domanda in modo cercherò di rispondere loro, a sua volta:

1: La sua davvero a te, ci sono delle regole dure-e-veloce al di là di quelle per la determinazione che una directory dovrebbe essere trattato come package e così via. Alcuni framework prescrivono una struttura di directory usando uno script per generare scaffolding (un po 'come fa Rails nel mondo Ruby) ma questa è puramente una comodità o una convenzione del framework dato. Organizza il tuo codice e i tuoi moduli in modo che abbiano un senso logico come faresti in qualsiasi altra lingua.

2: quello che hai è assolutamente soddisfacente. In alternativa puoi usare un installed script se stai usando distutils, un console_script come parte di un'installazione .egg, o come ultima risorsa basta chiamare direttamente lo script main.py (o qualsiasi cosa tu lo chiami). Il console_script è abbastanza comune e viene utilizzato da strumenti come il framework di test nose per esempio.

3: C'è uno PEP per questo argomento specifico. Nella mia esperienza però dovresti davvero preferire le importazioni assolute a quelle relative. Per forzare questo comportamento si può fare:

from __future__ import absolute_import 
+0

Che dire delle importazioni relative esplicite? 'da. import subpackage'? Sono un po 'preoccupato del fatto che le importazioni assolute si interrompano quando sposto alcuni pacchetti o li rinominino. –

+0

Odio non avere regole chiare per questo. Sono costantemente insicuro se lo sto facendo bene. È una di quelle cose che ogni programmatore deve capire da solo e passa molto tempo a fare esattamente questo. Avrebbe risparmiato un sacco di tempo se ci fossero delle linee guida. (Almeno per me.) –

+0

g: Python è piuttosto prescrittivo in molti posti, ad esempio PEP8 che specifica lo stile corretto da usare! (I programmatori C HATE questo ...) Il PEP che ho collegato cerca di chiarire la situazione sulle importazioni, ma per quanto riguarda il layout del progetto è difficile legiferare. All'interno di un dato contesto sì, ma per il resto è aperto al dibattito. La cosa migliore è leggere un sacco di codice e vedere cosa ti piace. – jkp

Problemi correlati