Sim*_*ght 19 python installation packaging include pyinstaller
Pyinstaller的所有文档都讨论了包含单个文件.是否可以包含目录,还是应该编写一个函数来遍历我的include目录来创建include数组?
sty*_*yts 19
将以下内容粘贴到a = Analysis()spec文件中以递归遍历目录并将其中的所有文件添加到分发中.
##### 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')
Run Code Online (Sandbox Code Playgroud)
den*_*ufa 13
我很惊讶没有人提到官方支持的选项使用Tree():
https://pythonhosted.org/PyInstaller/advanced-topics.html#the-toc-and-tree-classes
是的,您只需将目录添加到 Analysis 对象,然后它们就会被复制。
a = Analysis(['main.py'],
datas = [('test/dir', 'test/dir')],
...)
Run Code Online (Sandbox Code Playgroud)
问题比你想象的要容易
尝试这个:
--add-data="path/to/folder/*;."
希望能帮助到你 !!!
只是使用glob呢?
from glob import glob
datas = []
datas += glob('/path/to/filedir/*')
datas += glob('/path/to/textdir/*.txt')
...
a.datas = datas
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20342 次 |
| 最近记录: |