2015-01-07 16 views
5

Il parametro data_files per l'installazione prende in ingresso nel seguente formato:Includere tutta la directory in Python data_files setup.py

setup(... 
    data_files = [(target_directory, [list of files to be put there])] 
    ....) 

Esiste un modo per me di specificare un'intera directory dei dati, invece, così ho don' Devo nominare ogni file singolarmente e aggiornarlo mentre cambio l'implementazione nel mio progetto?

ho cercato di usare os.listdir(), ma non so come fare con i percorsi relativi, non ho potuto usare os.getcwd() o os.realpath(__file__) dal momento che quelli non indicare correttamente al mio repository di root.

risposta

1

non so come fare con i percorsi relativi

È necessario per ottenere il percorso della directory di prima, quindi ...

Diciamo che avete questa struttura di directory:

cur_directory 
|- setup.py 
|- inner_dir 
    |- file2.py 

Per ottenere la directory del file corrente (in questo caso setup.py), utilizzare questo:

cur_directory_path = os.path.abspath(os.path.dirname(__file__)) 

Poi, per ottenere un percorso di directory relative al current_directory, basta aderire alcune altre directory, come ad esempio:

inner_dir_path = os.path.join(cur_directory_path, 'inner_dir') 

Se si desidera spostare una directory, basta usare "..", per esempio:

parent_dir_path = os.path.join(current_directory, '..') 

Una volta che avete percorso, si può fare os.listdir

Per completezza:

Se si desidera che il percorso di un file, in questo caso "file2.py" rispetto al setup.py, si potrebbe fare:

file2_path = os.path.join(cur_directory_path, 'inner_dir', 'file2.py') 
1
import glob 

for filename in glob.iglob('inner_dir/**/*', recursive=True): 
    print (filename) 

In questo modo, si ottiene direttamente un elenco di file alla corrente directory.

Problemi correlati