Pyinstaller с pywinauto огромного размера файла - PullRequest
0 голосов
/ 10 октября 2019

У меня есть скрипт, который я хочу скомпилировать в исполняемый файл. Я использую Pyinstaller для этой задачи, и сгенерированный exe-файл слишком велик.

Существует несколько импортов, один из которых - pywinauto . Если я комментирую импорт pywinauto, я получаю исполняемый файл с 20 МБ. С pywinauto я получаю исполняемый файл с 232mb!

Примечание: я запускаю pyinstaller из виртуальной среды, в которой я только что установил необходимые зависимости python, которые я использую в сценарии.

Вот список импортов, которые я использую:

import os,subprocess,datetime, argparse, math, win32con
import boto3
from botocore.exceptions import NoCredentialsError
from botocore.client import Config
import wx,wx.adv
from pubsub import pub
from win32api import GetSystemMetrics

from pywinauto.application import Application
from pywinauto.keyboard import SendKeys
from pywinauto.findwindows import find_window

from base64 import b64decode
from zlib import decompress
from io import BytesIO

Команда Pyinstaller, которую я выполняю: pyinstaller --noconsole --onefile --i=rec.ico --clean script.py

pip list в моей виртуальной среде:

Package         Version
--------------- --------
boto3           1.9.246
botocore        1.12.246
comtypes        1.1.7
docutils        0.15.2
jmespath        0.9.4
Pillow          6.2.0
pip             19.2.3
pubsub          0.1.2
pypiwin32       223
python-dateutil 2.8.0
pywin32         225
pywinauto       0.6.7
s3transfer      0.2.1
setuptools      40.8.0
six             1.12.0
urllib3         1.25.6
wheel           0.33.6
wxPython        4.0.6

Есть ли способ уменьшить размер исполняемого файла?

В основном я использую pywinauto для отправки команды сочетания клавиш в другое приложение из моего скрипта. Если для этого есть альтернативная библиотека, которая сделает мой исполняемый файл меньше, я, конечно, попробую.

Спасибо!

===================

РЕДАКТИРОВАТЬ:

Я пытался скомпилировать с: pyinstaller --noconsole --onedir --i=rec.ico --clean script.py

Теперь я получаю папку с 660 МБ !!! И приложение загружается ПУТЬ быстрее (раньше требовалось около 15 секунд, теперь почти мгновенно).

В папке приложения содержится МНОГО DLL-файлов, 19 из которых являются самыми крупными, и их общая сумма достигает 537 МБ. .

Screenshot of the largest files in the folder

Любые предложения о том, как это урезать?

1 Ответ

1 голос
/ 16 октября 2019

Я сделал новую установку python 3.7, так как раньше я использовал дистрибутив Python от Anaconda, установил только нужные мне пакеты и снова скомпилировал его с помощью pyinstaller. Теперь у меня есть 35 МБ файл с --onefile или 120 МБ папка с --onedir. Я, вероятно, буду использовать onedir, потому что таким образом приложение загружается быстрее. Я не думаю, что это идеальный размер файла, но он определенно намного лучше, чем раньше (открыт для предложений на случай, если у кого-нибудь есть идеи о том, как еще больше уменьшить размер приложения). Спасибо Василию за помощь!

...