28 votes

Comment déployer une application de bureau Python ?

J'ai commencé à développer une application python personnelle qui fonctionne sur le bureau. J'utilise wxPython comme boîte à outils d'interface graphique. S'il y a une demande pour ce type d'application, j'aimerais éventuellement la commercialiser.

Je n'ai aucune connaissance du déploiement d'applications Python " réelles ", bien que j'aie utilisé py2exe dans le passé avec un succès variable. Comment puis-je obscurcir le code ? Puis-je en quelque sorte déployer uniquement le bytecode ?

La solution idéale ne mettrait pas en péril ma propriété intellectuelle (code source), ne nécessiterait pas une installation directe de Python (même si je suis sûr qu'il faudra un interpréteur intégré) et serait multiplateforme (Windows, Mac et Linux). Quelqu'un connaît-il des outils ou des ressources dans ce domaine ?

Merci.

12voto

cdleary Points 18869

Vous pouvez distribuer le bytecode Python compilé (fichiers .pyc) au lieu de la source. Vous ne pouvez pas empêcher la décompilation en Python (ou tout autre langage, en fait). Vous pouvez utiliser un obfuscateur comme pyobfuscate pour rendre plus ennuyeux pour les concurrents de déchiffrer votre source décompilée.

Comme le dit Alex Martelli dans ce fil si vous voulez garder votre code secret, vous ne devez pas l'exécuter sur les machines d'autres personnes.

IIRC, la dernière fois que j'ai utilisé cx_Freeze il a créé une DLL pour Windows qui supprime la nécessité d'une installation native de Python. Cela vaut au moins la peine d'être vérifié.

2voto

pjbeardsley Points 643

Wow, il y a beaucoup de questions là-dedans :

  • Il est possible d'exécuter le fichier bytecode (.pyc) directement depuis l'interpréteur Python, mais je n'ai pas vu d'outils d'obfuscation du bytecode disponibles.

  • Je ne connais pas de solution de déploiement "tout en un", mais.. :

    • Pour Windows, vous pouvez utiliser NSIS( http://nsis.sourceforge.net/Main_Page ). Le problème ici est que si OSX/*nix est livré avec python, Windows ne l'est pas. Si vous n'êtes pas prêt à construire un binaire avec py2exe, je ne suis pas sûr des problèmes de licence qui entourent la distribution de l'environnement d'exécution Python (sans parler des problèmes techniques).

    • Vous pouvez empaqueter la distribution OS X en utilisant le format "bundle", et *NIX a ses propres conventions pour installer des logiciels - typiquement un "make install" script.

J'espère que cela a été utile.

1voto

dsvensson Points 756

Peut-être qu'IronPython peut vous apporter quelque chose ? Je parie que ces fichiers .exe/.dll peuvent être assez verrouillés. Je ne suis pas sûr de la façon dont ces fonctionnalités fonctionnent sous mono, donc aucune idée de la façon dont cela fonctionne sous Linux/OS X...

0voto

Torsten Marek Points 27554

J'ai utilisé py2exe avec succès sous Windows. Le code doit être un peu modifié pour que l'analyse du code détecte tous les modules nécessaires, mais à part ça, ça fonctionne.

Quant à Linux, il existe plusieurs formats de distribution importants :

  • DEB (Debian, Ubuntu et autres dérivés)
  • RPM (RedHat, Fedora, openSuSE)

Les DEBs ne sont pas particulièrement difficiles à faire, surtout si vous utilisez déjà distutils/setuptools. Quelques conseils sont donnés dans le document de politique générale Des exemples d'empaquetage d'applications Python peuvent être trouvés dans le manuel de l'utilisateur. dépôt .

Je n'ai pas d'expérience avec RPM, mais je suis sûr qu'il y a suffisamment d'exemples à trouver.

0voto

Vova Korova Points 11

Essayez d'utiliser l'obfuscateur scraZ ( http://scraZ.me ). C'est un obfuscateur pour le bytecode, pas pour le code source. La version gratuite a de bonnes, mais pas parfaites méthodes d'obfuscation. La version PRO a une protection très très forte pour le bytecode. (après l'obfuscation du bytecode une décompilation est impossible)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X