Python py2exe - erreur de chargement de mémoire
Question
Je crée une application de niveau moyen en Python. Tout fonctionne bien maintenant, et j'essaye d'en faire un exécutable Windows avec py2exe. L’exécutable est bien créé, mais lorsque j’essaie de l’exécuter, il échoue avec l’erreur suivante.
File "zipextimporter.pyo", line 82, in load_module
File "ffhandler.pyo", line 33, in ?
File "zipextimporter.pyo", line 82, in load_module
File "pyAA\__init__.pyo", line 1, in ?
File "zipextimporter.pyo", line 82, in load_module
File "pyAA\AA.pyo", line 8, in ?
File "zipextimporter.pyo", line 82, in load_module
File "pyAA\pyAAc.pyo", line 5, in ?
File "zipextimporter.pyo", line 98, in load_module
ImportError: MemoryLoadLibrary failed loading pyAA\_pyAAc.pyd
J'utilise pyAA dans cette application. J'ai cherché sur Internet, mais je n'ai trouvé aucune solution. J'ai copié msvcp71.dll dans Windows / System32, mais le problème persiste.
Je l'avais résolu plus tôt (il y a environ 7 mois), mais mon disque dur s'est écrasé et lorsque j'essaie de le recréer, je ne peux pas sembler le résoudre maintenant. : - (
Je serais très obligé si quelqu'un pouvait m'aider ici.
EDIT: Lorsque j'utilise py2exe sans l'option de fichier bundle, cela fonctionne parfaitement. Mais lorsque j'utilise l'option de fichier bundle, elle échoue.
J'ai essayé l'option sans fichier zip, qui crée un fichier library.zip avec l'exécutable. Encore une fois, cela a échoué. J'ai décompressé le fichier library.zip à l'aide de 7-zip et constaté que _pyAAc.pyd se trouve dans le dossier pyAA du fichier zip. Il semble donc y avoir un problème avec la fonction memoryloadlibrary.
Lorsque j'ai essayé de décompresser à l'aide de la fonction de décompression Windows, l'opération a échoué. J'ai dû utiliser 7-zip pour le décompresser. Est-ce un indice possible?
La solution
Il manque des DLL dans votre build ...
Recherchez d’abord le fichier _pyAAC.pyd
sur votre disque dur. Assurez-vous qu’il est inclus (expédié) dans votre version.
Ensuite, utilisez 'dependency walker' sur le fichier .pyd (dans votre version compilée py2exe!) pour voyez ce qui manque encore (autres DLL qui sont à l'origine du message MemoryLoadLibrary
pour le fichier .pyd). Assurez-vous que ces dépendances sont également expédiées, ...