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.
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
Vous devez vous connecter pour publier un commentaire.
essayez de configurer votre environnement avec un virtualenv, et de l'installer dans n'seules les bibliothèques
quelques détails sur le travail avec virtual env êtes ici: https://virtualenv.pypa.io/en/stable/
oui - il un peu comme un python virtualbox - tous les paquets sont installés dans un autre virtuel env, et de ne pas l'effet de la principale installation de python. retrait de c'est juste de la suppression d'un répertoire, et vous le cn ont sevral virtualenvs avec différentes combinaisons des bibliothèques et des versions
Je ne suis pas familier avec les environnements virtuels, mais je vais devoir être. À l'aide de pyinstaller sur une virtual box est à l'origine de problèmes. Peut-être un virtuel env permettra de le corriger.
Cette méthode a réduit de 50% la taille du fichier dans mon cas. J'ai été importation
os
,pandas
,sqlalchemy
.OriginalL'auteur Ophir Yoktan
Je me sens comme ces deux réponses sont excellentes.
Pour moi, c'est un simple cas de l'utilisation de pandas que l'exe est énorme.
Bien que l'élimination de certains répertoires a été utile, comme l'a UPXING ça aide beaucoup aussi.
Je l'ai réduit de beaucoup de choses et il ne faisait pas cela par défaut.
Cela étant dit, la dernière et la plus importer la solution est parlé ici: L'importation de modules Python à partir d'un emplacement . Donc, il y avait une fonction qui fait tout cela, mais pour l'instant il est certains de la manutention manuelle de cause car: multipackage-paquets est cassé.
Maintenant, pour la solution la plus simple pour beaucoup de exe
Si vous avez beaucoup de fichiers exécutables, je recommande fortement cette approche:
Mettre maintenant abd.exe dans l'un répertoire de abc.py dossier ainsi que tous les autres scripts externes. Assurez-vous qu'elles sont nommées différemment ou un seul script sera exécuté.
Cela fonctionne vraiment bien parce que toutes les dépendances sont dans un dossier. C'est comment il devrait être. Donc, dans cet exemple, disons que vous avez eu un 40mb d'un dossier. Pour chaque exe par la suite, il ne sera +5 mo(ou comment big le fichier exe est) plutôt que 40 mo chacun.
OriginalL'auteur
L'interpréteur python et tous les modules sont inclus dans l'exécutable.
Vous pouvez essayer d'ajouter des modules que vous souhaitez exclure de la
excludes
en vertu de la listeAnalysis
dans votre fichier spec.Vous pouvez également essayer de compresser le fichier exécutable à l'aide de UPX. Voir Une remarque sur l'utilisation de UPX
Je pensais que c'était upxed automatiquement, mon erreur. Quelque chose comme: pyinstaller -F --upx-dir C:\Users\DD\Downloads\upx394w\upx394w\123\upx308w\upx.exe zz.spec ne fonctionne pas bien.
OriginalL'auteur Aaron Garton