Vorrei distribuire il mio codice Python e file statici rilevanti in modo tale che sia necessaria solo una copia di una cartella. Cioè, tutti i percorsi all'interno sono relativi. La versione è destinata a un server Web, che chiama script in un sottoprocesso.
Naturalmente, tutto funziona nel mio ambiente in PyCharm. I problemi sorgono quando sottoprocesso Python ed eseguo script da una directory di lavoro arbitraria. Questo può essere evitato in alcuni modi:
- Utilizza percorsi assoluti quando fai riferimento ai file
- Utilizza le importazioni relative con i sottomoduli
- Aggiungi percorsi a
sys.path
per utilizzare percorsi relativi - Modifica la directory di lavoro dell'host
- Modifica la struttura del file di progetto
Ho problemi con questi approcci.
- I percorsi assoluti non funzioneranno quando il codice viene spostato
- Le importazioni relative funzionano solo con i moduli sub , non nella struttura dei file
- L'aggiunta a
sys.path
all'inizio di ogni script è brutta e ingombrante - Avere tutti i file sorgente nella radice del progetto è disordinato
Queste potrebbero non essere le migliori ragioni per lamentarsi, ma nella mia esperienza, altre persone hanno più esperienza con quasi tutte le cose e potrebbero conoscere un trucco che non ho ancora incontrato.
Come ti avvicineresti a questo? ( ansimare , un'opinione!) Molte grazie! Qualsiasi aiuto è molto apprezzato.
Modifica: strutture di file di esempio
Root\ Root\ Root\
Data\ Data\ Data\
Data.csv Data.csv Data.csv
Text.txt Text.txt Text.txt
Sources\ Sources\
Script.py Script.py Script.py
Module.py Module.py Module.py
Needs_data.py Needs_data.py Needs_data.py
Data_and_module.py Data_and_module.py Data_and_module.py
Queste sono alcune opzioni che ho trovato per impostare una struttura di file. Quasi tutti gli script devono importare un modulo e aprire file in Data
. Idealmente la struttura sarebbe il primo tipo, possibilmente con sottocartelle.