Question

J'ai un script de configuration standard pour py2exe avec lequel je Regroupez des applications basées sur PyQt-dans les fichiers de Windows.

Aujourd'hui, j'ai essayé un script simple qui utilise le module PyQwt, et il ne semble pas fonctionner. py2exe fonctionne bien, mais quand je l'exécute .exe crée, il vide les éléments suivants dans un fichier journal et ne fonctionne pas:

Traceback (most recent call last):
  File "qwt_test.pyw", line 5, in <module>
  File "zipextimporter.pyo", line 82, in load_module
  File "PyQt4\Qwt5\__init__.pyo", line 32, in <module>
  File "zipextimporter.pyo", line 98, in load_module
ImportError: MemoryLoadLibrary failed loading PyQt4\Qwt5\Qwt.pyd

Quand je regarde dans PyQt4\Qwt5\ dans le répertoire build\bdist.win32\winexe\collect-2.5, Qwt.pyd est certainement là.

Je ne peux pas sembler trouver quoi que ce soit en ligne utile concernant cette erreur. Ce qui pourrait l'amener? Merci.

Était-ce utile?

La solution

py2exe n'est pas la seule façon, et peut-être pas la meilleure façon, de mettre ensemble des fichiers exe pour les applications Python - en particulier, il peine si, à tous les supports PyQt. S'il vous plaît, je vous en supplie, consultez PyInstaller qui ne sait au sujet PyQt (et Linux, et Mac, devrait vous vous souciez ...) - assurez-vous d'utiliser la caisse de tête SVN, pas « sorti » version, qui à ce moment est sérieusement mis à jour (une question qui nous l'espérons va bientôt disparaître ...)

Autres conseils

Certaines options:

  1. Essayez de jouer avec le bundle_files options de py2xe (3, 2, 1) (surtout si vous les mettez tous dans un grand zip bibliothèque, quelques DLLs n'aiment pas).
  2. Assurez-vous une copie de msvcp71.dll existe sous windows \ system32 ou dans le répertoire de l'exécutable.
  3. Essayez d'exclure la dll explicitement (ajouter Qwt.pyd à l'option dll_excludes et (après la construction) copie Qwt.pyd (et _Qwt.pyd si elle existe) à votre chemin exécutable.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top