Я разрабатываю кросс-платформенное приложение, которое отправляет дополнительные двоичные файлы из исходного каталога для linux и windows. Сейчас я использую следующий скрипт в моем файле * .spec, чтобы включить все двоичные файлы из исходного каталога.Pyinstaller - Исключить файлы из окончательного исполняемого файла
##### 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')
Все работает хорошо. Теперь проблема в том, что когда я создаю binay из окон, все дополнительные бинарные файлы linux также отправляются в окончательный исполняемый файл. Это делает окончательный автономный исполняемый файл большим по размеру.
Есть ли способ сообщить pyinstaller для выполнения определенных файлов/бинарников из исходного каталога. Кроме того, можно исключить определенные * .so/* .dll, которые действительно не требуются в финальном исполняемом файле?
Я использую следующие для развития: -
Python 2.7
Pyinstaller 2,1
Debian 7 для Linux
ОС Windows 7 для Win
Любая помощь appriciated.
Благодарим вас за сценарий. Это сработало. Но с небольшими изменениями. Пример: - 'a.datas + = extra_datas (some_dir, [" путь/to/something.txt "," путь/to/something.exe ", ...])' –