带有 pywinauto 巨大文件大小的 Pyinstaller

Pyinstaller with pywinauto huge file size

我有一个要编译成可执行文件的脚本。我正在使用 Pyinstaller 执行此任务,但生成的 exe 文件太大。

有几个导入,其中之一是 pywinauto。如果我评论 pywinauto imports 我得到一个 20mb 的可执行文件。使用 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

现在我得到了一个660MB的文件夹!!!而且应用程序加载速度更快(之前加载大约需要 15 秒,现在几乎是即时加载)。

应用程序的文件夹有很多dll文件,其中最大的19个加起来有537 Mb。

关于如何trim有什么建议吗?

我重新安装了 python 3.7,因为我之前使用的是 Anaconda 的 Python 发行版,因此只安装了我需要的包并再次使用 pyinstaller 编译它。现在我有一个 --onefile 的 35Mb 文件或 --onedir 的 120Mb 文件夹。我可能会使用 onedir,因为这样应用程序加载速度更快。我不认为它是理想的文件大小,但它确实比以前更好(如果有人对如何进一步减小应用程序的大小有想法,可以接受建议)。感谢 Vasily 的帮助!