2012-07-04 20 views
11

Die gesamte Dokumentation für Pyinstaller spricht über die Aufnahme einzelner Dateien. Ist es möglich, ein Verzeichnis einzuschließen, oder sollte ich eine Funktion zum Erstellen des Include-Arrays schreiben, indem ich mein Include-Verzeichnis durchquere?Einfügen eines Verzeichnisses mit Pyinstaller

Antwort

3

Ich bin überrascht, dass niemand die offizielle Option Tree() mit unterstützt erwähnt:

https://stackoverflow.com/a/20677118/2230844

https://pythonhosted.org/PyInstaller/advanced-topics.html#the-toc-and-tree-classes

+1

Vielen Dank für die Freigabe, mit [der Tree-Klasse] (https://pythonhosted.org/PyInstaller/advanced-topics.html#the-tree-class) löste es für mich in einer eleganten Art und Weise. Jetzt brauche ich nur diese eine Zeile: 'a.datas + = Baum ('./ dir_to_include', prefix = 'dir_to_include')' – sunyata

+0

yep, ich denke es ist einfach nicht gut genug dokumentiert, aber diese Open-Source, also PRs sind willkommen :) – denfromufa

4

Was ist nur mit glob?

from glob import glob 
datas = [] 
datas += glob('/path/to/filedir/*') 
datas += glob('/path/to/textdir/*.txt') 
... 

a.datas = datas 
17

Fügen Sie den folgenden nach a = Analysis() in der Spec-Datei ein Verzeichnis rekursiv und fügen Sie alle Dateien in es um die Verteilung zu durchqueren.

##### include mydir in distribution ####### 
def extra_datas(mydir): 
    def rec_glob(p, files): 
     import os 
     import glob 
     for d in glob.glob(p): 
      if os.path.isfile(d): 
       files.append(d) 
      rec_glob("%s/*" % d, files) 
    files = [] 
    rec_glob("%s/*" % mydir, files) 
    extra_datas = [] 
    for f in files: 
     extra_datas.append((f, f, 'DATA')) 

    return extra_datas 
########################################### 

# append the 'data' dir 
a.datas += extra_datas('data') 
+0

Entschuldigen Sie mich, aber ich wirklich nicht bekommen. Ich habe ein Verzeichnis mit dem Namen '~/Scripts'. Meine Daten werden in '~/Scripts/Data' gespeichert. Soll ich 'a.datas + = extra_datas ('data')' durch 'a.datas + = extra_datas ('Data')' ersetzen? –

+0

Wenn sich Ihr pyInstaller-Skript auch in 'Scripts' befindet und Sie es mit' python mybuildscript.py' innerhalb von 'Scripts' aufrufen, dann sollten Sie mit' Data' ersetzen, andernfalls verwenden Sie '.' und' ..', um zu navigieren der Verzeichnisbaum. – styts

Verwandte Themen