Sto lavorando per l'adozione di Python come parte della suite di strumenti di sviluppo del mio team. Con gli altri linguaggi/strumenti che utilizziamo, sviluppiamo molte funzioni riutilizzabili e classi specifiche per il lavoro che facciamo. Questo standardizza il modo in cui facciamo le cose e risparmia molte ruote reinventando.Qual è il modo corretto di lavorare con i moduli condivisi nello sviluppo di Python?
Non riesco a trovare alcun esempio di come questo viene in genere gestito con Python. In questo momento ho una cartella di sviluppo su un'unità locale, con più cartelle di progetto al di sotto di quella e un'ulteriore cartella "comune" contenente pacchetti e moduli con classi e funzioni riutilizzabili. Questi moduli "comuni" vengono importati dai moduli all'interno di più progetti.
Development/
Common/
Package_a/
Package_b/
Project1/
Package1_1/
Package1_2/
Project2/
Package2_1/
Package2_2/
Nel cercare di imparare come distribuire un'applicazione Python, sembra che ci sia un presupposto che tutti i pacchetti di riferimento sono al di sotto della cartella di progetto di primo livello, non è garanzia ad essa. Mi è anche venuto in mente che forse l'approccio corretto è quello di sviluppare moduli comuni/framework in un progetto separato e, una volta testato, distribuirli all'ambiente di ogni sviluppatore installando la cartella dei pacchetti del sito. Tuttavia, ciò solleva anche questioni di nuova distribuzione.
Qualcuno può far luce su questo o indirizzarmi a una risorsa che discute questo problema?
sguardo al 'sys.path' –
Come vuoi che i pacchetti siano presentati al programma python? Sono Package_a - Pacchetto2_1 tutti i pacchetti di primo livello, o stai provando a fare qualche namespacing/gerarchia? –
Hmmm ... non sono sicuro di cosa intendi per pacchetti "di primo livello". Nel caso dei pacchetti in "Comune", sono un modo per distinguere classi e funzioni che sono estensioni di librerie standard e/o wrapper e decoratori di classi di librerie standard, e quelle classi e funzioni che sono specifiche "aziendali", vale a dire che fornisce funzionalità riutilizzabili specifiche per il nostro ambiente. Ciascun pacchetto contiene più moduli al suo interno che organizzano ulteriormente le routine riutilizzabili all'interno di tali spazi dei nomi. Non sono sicuro se sto rispondendo alla domanda. –