2008-10-08 5 views
4

Lors de l'utilisation de py2exe pour distribuer des applications Python avec wxPython, certaines DLL MSVC sont généralement nécessaires pour que le fichier .exe fonctionne sur les machines fraîchement installées. En particulier, les deux DLL les plus courantes sont msvcp71.dll et msvcr71.dllpy2exe incluant les DLLs MSVC dans le fichier .exe

Le premier peut être inclus dans le fichier .exe en utilisant this tip. Cependant, ce dernier est simplement placé dans le répertoire dist par py2exe et non dans l'exécutable, même si je demande spécifiquement de l'inclure.

Une idée sur la façon d'amener py2exe à inclure les deux dans le fichier .exe?

Répondre

7

Ne serait-ce pas le lancement, alors? Vous voulez msvcr71.dll dans le même répertoire que l'exe, afin que le chargeur de bibliothèque puisse le trouver et le lier dans la carte mémoire de l'application.

Il est nécessaire pour l'opération de base, vous ne pouvez donc pas laisser py2exe le décompresser avec le reste des DLL.

+4

Je pense que vous ne comprenez pas comment les DLL et py2exe fonctionnent. py2exe regroupe les DLL dans un exécutable, puis les extrait et les charge au moment de l'exécution avant d'exécuter la partie Python. Pour effectuer l'extraction, msvcr71.dll doit déjà être présent. –

+1

Voulez-vous dire que le fichier .exe créé par py2exe a besoin de msvcr71.dll pour extraire et charger les DLL à partir de lui-même? –

1

py2exe ne peut pas faire cela. Vous pouvez envelopper py2exe (il y a an example on the wiki montrant comment faire cela avec NSIS); vous pourriez construire votre propre enveloppe si vous utilisiez NSIS ou InnoSetup n'était pas une option.

Alternativement, si vous êtes sûr que vos utilisateurs auront une copie compatible de msvcr71.dll installé (utilisateurs IIRC Vista ou XP SP2), alors vous pourriez vous en sortir sans l'inclure. Plus utilement, peut-être, si vous utilisez Python 2.3 (ou plus ancien), alors les liens Python contre msvcr.dll plutôt que msvcr71.dll, et n'importe quel utilisateur Windows aura installé, donc vous ne pouvez pas vous inquiéter à ce sujet.

+0

Le problème est avec wxPython, qui fait un lien avec msvcr71.dll –

+0

Si vous reculez assez loin dans les versions de wxPython, vous en trouverez une qui est liée à msvcr.dll au lieu de msvcr71.dll, tout comme Python. Il semble improbable que tout cela vaille la peine d'être fait, mais je ne connais pas votre situation, bien sûr. –

Questions connexes