2012-07-04 33 views
11

Tất cả tài liệu cho các cuộc thảo luận Pyinstaller về việc bao gồm các tệp riêng lẻ. Có thể bao gồm một thư mục hay tôi nên viết một hàm để tạo mảng bao gồm bằng cách duyệt qua thư mục bao gồm của tôi?Bao gồm một thư mục sử dụng Pyinstaller

Trả lời

3

Tôi ngạc nhiên rằng không có ai đề cập đến lựa chọn chính thức hỗ trợ sử dụng Tree():

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

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

+1

Cảm ơn bạn đã chia sẻ, sử dụng [lớp Cây] (https://pythonhosted.org/PyInstaller/advanced-topics.html#the-tree-class) đã giải quyết nó cho tôi một cách thanh lịch. Bây giờ tôi chỉ cần một dòng này: 'a.datas + = Tree ('./ dir_to_include', prefix = 'dir_to_include')' – sunyata

+0

yep, tôi nghĩ rằng nó chỉ là không được tài liệu đủ tốt, nhưng nguồn mở này, vì vậy PR được chào đón :) – denfromufa

4

Còn việc sử dụng glob thì sao?

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

a.datas = datas 
17

Dán tệp sau đây vào một thư mục đệ quy và thêm tất cả các tệp vào thư mục để phân phối.

##### 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

Excuse me, nhưng tôi không thực sự có được nó. Tôi có một thư mục có tên là '~/Scripts'. Dữ liệu của tôi được lưu trữ trong '~/Scripts/Data'. Tôi có nên thay thế 'a.datas + = extra_datas ('dữ liệu')' bằng 'a.datas + = extra_datas ('Dữ liệu')'? –

+0

Nếu kịch bản pyInstaller của bạn cũng nằm trong 'Scripts' và bạn gọi nó bằng' python mybuildscript.py' từ bên trong 'Scripts' thì có, bạn nên thay thế bằng' Data', nếu không sử dụng '.' và' ..' để điều hướng cây thư mục. – styts

Các vấn đề liên quan