2012-11-29 2 views
5

So mache ich setuptool Paket.Setup-Tools. Wie man Paket bildet, addieren Sie zusätzlichen Datenordner und alle Hefte innerhalb

Um zusätzliche Dateien in das Paket zu integrieren, muss ich data_file Parameter innerhalb setup() angeben.

Codebeispiel:

datadir = os.path.join('share','data') 
datafiles = [(datadir, [f for f in glob.glob(os.path.join(datadir, '*'))])] 
import metainfo # a file with relevant information 
setup(
    name    = 'yourpackage', 
    version   = metainfo.version, 
    maintainer  = metainfo.maintainer, 
    maintainer_email = metainfo.maintainer_email, 
    author   = metainfo.authors, 
    author_email  = metainfo.authors, 
    description  = metainfo.description, 
    keywords   = metainfo.keywords, 
    long_description = metainfo.long_description, 

    # package installation 
    packages = find_packages('src'), 
    package_dir = package_dir, 

    data_files = datafiles, 
} 

datafile Variable in diesem Beispiel werden die Daten enthalten, wie diese

[('share/data', ['share/data/addon.xml.tmplt', 'share/data/default.py.tmplt'])] 

Allerdings ist mein Beispiel nicht Liste der Ordner machen und mit Dateien rekursiv.

Ich brauche Funktion, die als Parameter folder_path bekommt und gibt Liste der Tupel:

[ 
    ('share/data', ['share/data/addon.xml.tmplt', 'share/data/default.py.tmplt']), 
    ('share/data/inside', ['share/data/inside/file.iside', 'share/data/inside/file2.inside']), 
    ......... 

] 

Antwort

9

Verwenden os.walk() diese Informationen zu generieren:

datafiles = [(root, [os.path.join(root, f) for f in files]) 
    for root, dirs, files in os.walk(datadir)] 

Das wird absoluten Pfad erzeugen; Sie können die Variable root etwas weiter verarbeiten, um sie bei Bedarf relativ zum Verzeichnis setup.py zu machen.

+0

Sie können '[(root, glob.glob (root /**/*.*, rekursiv = True)]' – warownia1

+0

@ warownia1: nein, weil das '' Verzeichnispfad, list_of_files_in_directory) 'Tupel nicht erstellen * pro Verzeichnis *. –

Verwandte Themen