【发布时间】:2012-07-04 13:42:32
【问题描述】:
Pyinstaller 的所有文档都谈到了包含单个文件。 是否可以包含一个目录,或者我应该编写一个函数来通过遍历我的包含目录来创建包含数组?
【问题讨论】:
标签: python installation include pyinstaller packaging
Pyinstaller 的所有文档都谈到了包含单个文件。 是否可以包含一个目录,或者我应该编写一个函数来通过遍历我的包含目录来创建包含数组?
【问题讨论】:
标签: python installation include pyinstaller packaging
【讨论】:
a.datas += Tree('./dir_to_include', prefix='dir_to_include')
在spec文件中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')
【讨论】:
~/Scripts 的目录。我的数据存储在~/Scripts/Data。我应该用a.datas += extra_datas('Data') 替换a.datas += extra_datas('data') 吗?
Scripts 中并且您在 Scripts 中使用 python mybuildscript.py 调用它,那么是的,您应该使用 Data 替换,否则使用 . 和 @987654332 @ 导航目录树。
是的,您只需将目录添加到 Analysis 对象,它们就会被复制。
a = Analysis(['main.py'],
datas = [('test/dir', 'test/dir')],
...)
【讨论】:
... datas = [('test/dir', 'test/dir'),('test2/dir', 'test2/dir')] ...
只使用glob 怎么样?
from glob import glob
datas = []
datas += glob('/path/to/filedir/*')
datas += glob('/path/to/textdir/*.txt')
...
a.datas = datas
【讨论】:
问题比你想象的要容易
试试这个:
--add-data="path/to/folder/*;."
希望对你有帮助!!!
【讨论】:
--add-data="path/to/folder/*;path/to/folder/"