2017-08-15 3 views
0

(J'ai déjà résolu ce problème mais cela m'a coûté deux semaines de mon temps et mon employeur un couple de grand, donc je partage ici pour sauver une âme pauvre.)Accumulations exécutables empaquetées sans avertissement lors du rendu des parcelles

Mon entreprise est en train de convertir notre application de 32 bits en 64 bits. Nous créons un exécutable en utilisant py2exe, en utilisant l'option bundle = 2. L'exécutable a commencé à planter dès qu'il a essayé de rendre un tracé matplotlib.

Versions:

python == 02/07/13,

matplotlib == 2.0.0,

numpy == 1.13.1,

py2exe == 0.6.10a1

Répondre

0

J'ai suivi l'erreur dans la bibliothèque numpy. Numpy appelle numpy.linalg._umath_linalg.inv() et le programme se ferme brutalement sans message d'erreur, d'avertissement ou de traceback.

_umath_linalg est un fichier .pyd et je découvre que ce dossier particulier de .pyd n'aime pas être appelé à partir library.zip, qui est l'endroit où py2exe met en utilisant l'option bundle 2 ou 1.

La solution est d'exclure numpy dans le script d'installation de py2exe et de copier le dossier du paquet entier dans le répertoire de distribution et d'ajouter ce répertoire au chemin du système en haut du script python principal.