La réduction de la taille de pyinstaller exe

J'ai un simple pandas pyinstaller exe qui est de plus de 40 MO.

Mon exe exemple:

import collections
import csv
import selenium
import pandas

print('hi')

40 MO+ pour que cela semble un peu exagéré.

Comment puis-je réduire autant que possible?

Une méthode:

pyinstaller --onefile --exclude matplotlib --exclude scipy --exclude pandas --exclude numpy.py

Ce n'est cependant pas pratique en considérant la taille de la liste d'exclusion serait.

Comment puis-je sélectionner un dossier pour pyinstaller pour obtenir les modules de et exclure tout le reste donc j'ai peut-être une petite application?

Fichier Spec:

a = Analysis(['123.py'],
             pathex=['C:\\Users\\AA\\ZZ'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='123',
          debug=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=True )

Il est également intéressant de mentionner. Par défaut, Pyinstaller ne détecte pas les pandas.

Ajouter:

hiddenimports = ['pandas._libs.tslibs.timedeltas']

To: C:\Users\<NAME>\AppData\Local\Programs\Python\Python36\Lib\site-packages\PyInstaller\hooks

Un possible solution lors de l'utilisation de plusieurs exécutables, pourrait être de lier chaque exécutable dans un dossier séparé ou exécutable avec toutes les importations.

Si vous supprimez les dépendances, l'exe n'est pas en mesure d'exécuter le script, ou ai-je raté quelque chose?
Pyinstaller est l'emballage d'autres choses ne sont pas nécessaires. Aussi, 40 mo pour que l'exe? J'ai essayé de UPX, mais ça ne change pas beaucoup pour moi. Doit être de faire le mal.
Quand je fais pyinstaller --onefile test.py (test.py contient votre exemple), j'obtiens un fichier exécutable qui est d'environ 5 mo.
Essayez d'utiliser l'option --onedir option au lieu de --onfichier, et de voir ce pyinstaller est de la mettre dans le dossier dist.

OriginalL'auteur | 2017-12-07