J'ai un programme qui dépend actuellement de numpy
que j'ai travaillé sur la conversion avec py2exe
. Mon problème est que même avec un script tel queRéduire la taille de la distribution py2exe, tout en incluant quelques fonctions numpy
from numpy import array
print array(1)
qui utilise uniquement la fonction numpy.array
, je ne peux pas trouver un moyen d'exclure les parties apparemment inutiles du paquet numpy
tels que numpy.linalg
dans la distribution créée par py2exe
. Cela se traduit par une taille supérieure à 80 Mo (30 Mo après zippage). Il y a un fichier dans le dossier appelé numpy.linalg._umath_linalg.pyd
qui est 34MB et un autre appelé numpy.linalg.lapack_lite.pyd
qui est 18MB - est-ce que ces fichiers ont vraiment besoin d'être là ?! Le .exe
ne fonctionne pas s'il est simplement supprimé.
Ma question est, comment puis-je réduire la taille de distribution qui en résulte? Je suis conscient qu'il existe des alternatives à py2exe
et que si je pouvais supprimer la dépendance sur numpy
je n'aurais pas ce problème, mais je voudrais rester avec les deux.
Le script de configuration suivant est ce que j'utilise, ce qui donne une distribution de 87 Mo.
from distutils.core import setup
import py2exe, sys
import shutil
sys.argv.append('py2exe') # No need to type in command line.
py2exe_options = {
# 'excludes': ['numpy.linalg'], # Stopped the resulting exe from running
'compressed': True, # Saves 5MB, is this at the cost of some speed?
'optimize': 1 # I don't really understand what this does.
}
setup(
windows=[{'script': 'main.pyw'}],
options={'py2exe': py2exe_options},
)
shutil.rmtree('build', ignore_errors=True) # Remove the build folder
connexes: http://forums.xkcd.com/viewtopic.php?f=11&t=57929 – Siwel
Huh bizarre. Ces deux '.pyd' fichiers sur mon système sont seulement 68 et 26 Ko. Comment avez-vous installé Numpy? –
La taille dépend de l'intégration statique des fichiers comme Intel MKL/OpenBLAS/Atlas. Si vous n'avez pas besoin d'algèbre linéaire rapide, vous pouvez réduire la taille en compilant Numpy sans MKL/OpenBLAS/Atlas. –