Ответ 1
Я удивлен, что никто не упомянул официальный поддерживаемый вариант, используя Tree()
:
fooobar.com/questions/481127/...
https://pythonhosted.org/PyInstaller/advanced-topics.html#the-toc-and-tree-classes
Вся документация для Pyinstaller говорит о включении отдельных файлов. Можно ли включить каталог или написать функцию для создания массива include путем перемещения моей каталогов include?
Я удивлен, что никто не упомянул официальный поддерживаемый вариант, используя Tree()
:
fooobar.com/questions/481127/...
https://pythonhosted.org/PyInstaller/advanced-topics.html#the-toc-and-tree-classes
Вставьте следующее после 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')
Как насчет использования glob
?
from glob import glob
datas = []
datas += glob('/path/to/filedir/*')
datas += glob('/path/to/textdir/*.txt')
...
a.datas = datas