39

Pyinstaller 的所有文档都谈到了包括单个文件。是否可以包含一个目录,或者我应该编写一个函数来通过遍历我的包含目录来创建包含数组?

4

5 回答 5

26

我很惊讶没有人提到官方支持的选项使用Tree()

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

https://pyinstaller.readthedocs.io/en/stable/advanced-topics.html#the-toc-and-tree-classes

于 2017-02-06T06:41:17.367 回答
23

在规范文件中粘贴以下内容a = Analysis()以递归遍历目录并将其中的所有文件添加到分发中。

##### 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')
于 2012-08-20T07:24:37.183 回答
8

是的,您只需将目录添加到 Analysis 对象,它们就会被复制。

a = Analysis(['main.py'],
             datas = [('test/dir', 'test/dir')],
             ...)
于 2020-05-14T15:19:45.110 回答
7

只是使用glob呢?

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

a.datas = datas
于 2012-07-04T04:59:00.630 回答
7

问题比你想象的要容易

试试这个: --add-data="path/to/folder/*;."

希望能帮助到你 !!!

于 2019-11-30T16:21:48.493 回答