Including a directory using Pyinstaller

前端 未结 5 855
轻奢々
轻奢々 2020-12-01 05:43

All of the documentation for Pyinstaller talks about including individual files. Is it possible to include a directory, or should I write a function to create the include ar

相关标签:
5条回答
  • 2020-12-01 05:56

    I'm suprised that no one mentioned the official supported option using Tree():

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

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

    0 讨论(0)
  • 2020-12-01 06:00

    Yes, you can just add directories to the Analysis object and they get copied across.

    a = Analysis(['main.py'],
                 datas = [('test/dir', 'test/dir')],
                 ...)
    
    0 讨论(0)
  • 2020-12-01 06:10

    What about just using glob?

    from glob import glob
    datas = []
    datas += glob('/path/to/filedir/*')
    datas += glob('/path/to/textdir/*.txt')
    ...
    
    a.datas = datas
    
    0 讨论(0)
  • 2020-12-01 06:18

    Paste the following after a = Analysis() in the spec file to traverse a directory recursively and add all the files in it to the distribution.

    ##### 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 讨论(0)
  • 2020-12-01 06:18

    The problem is easier than you can imagine

    try this: --add-data="path/to/folder/*;."

    hope it helps !!!

    0 讨论(0)
提交回复
热议问题