Nota
Mi rendo conto che questa potrebbe essere una domanda soggettiva a cui rispondere, ma non mi aspetto una risposta sotto forma di "Fai questo e tutto funzionerà". Sono consapevole che ci saranno probabilmente alcune decisioni da prendere e che approcci diversi sono migliori per diversi scenari. In ogni caso, vorrei una recensione dei pro e dei contro di qualunque strategia i professionisti stiano effettivamente utilizzando.
Supponiamo che io stia scrivendo una grande biblioteca, chiamata BigLibrary. Questa libreria può essere suddivisa in diversi progetti più piccoli, alcuni dei quali sono anche utili al di fuori di BigLibrary. Qual è il modo migliore per organizzare la struttura delle cartelle e l'installazione per avere un flusso di lavoro regolare?
Considera che uso anche git e che molti sviluppatori dovrebbero essere in grado di lavorare su tutti gli aspetti del progetto.
Ho alcune opzioni:
Opzione 1
BigProject
__init__.py
main_files.py
subLibrary1
subLibrary2
Il problema con questo è che subLibrary1 e subLibrary2 devono essere accessibili tramite BigProject, che non è l'ideale. Inoltre, complica il flusso di lavoro con git se voglio che subLibrary1 e subLibrary2 abbiano il proprio repository git.
Opzione 2
BigProject
__init__.py
Library1
Library2
Il problema è che BigProject non vedrà Library1 e Library2, a meno che non li aggiunga manualmente a sys.path. Questa sembra una brutta soluzione. Rende tutto perfettamente funzionante con git, ma inquina anche lo spazio dei nomi un po '.
Idealmente, dovrei anche essere in grado di modificare Library1 e Library2 senza che ciò influisca su BigProject - e solo decidendo di aggiornare ad una certa versione di Library1 e Library2 quando ritengo che sia un buon momento. Fondamentalmente voglio fare in modo che BigProject usi un certo checkout di Library1 e 2 fino a quando decido di "aggiornarlo" e portarlo all'attuale checkout.