2016-10-30 1 views
2

Je suis relativement nouveau en programmation. J'ai récemment fait un jeu de serpent simple en utilisant python et pygame. Bien sûr, je peux facilement jouer à mon jeu en exécutant le script .py, mais en voulant le partager avec mes amis moins instruits en informatique, j'ai continué à essayer de comprendre comment compiler mon code en un seul .exe pour le rendre facile pour eux.Compiler python en un seul fichier .exe, pourquoi est-ce si difficile?

J'ai essayé py2exe et cx_Freeze, tous deux me donnant un répertoire dist ou build avec un fichier .exe et plusieurs autres fichiers (dépendances). Cela fonctionne, puisque je suis capable de compresser tout le dossier et de le distribuer via .zip, mais ce n'est pas idéal. Je veux pouvoir tout emballer dans un seul fichier. J'ai donc commencé à googler 'comment compiler python en un seul exe'. Cependant, contrairement à la plupart des problèmes de programmation que j'ai essayé de googler auparavant, je ne peux pas obtenir une réponse directe et fiable. Jusqu'à présent, la plus récente réponse fiable que j'ai essayé me donne ce script setup.py:

from distutils.core import setup 
import py2exe, sys, os 

sys.argv.append('py2exe') 

setup(
     options = {'py2exe': {'bundle_files': 1, 'compressed': True}}, 
     windows = ['snek.py'], 
     zipfile = None 
     ) 

# Python 3.4.4, py2exe 0.9.2.2; modules used: pygame, random 

Pourtant, il me donne un dossier entier au lieu d'un seul .exe, que le programme ne peut pas fonctionner sans. Donc, je viens à vous, l'omniscient, l'excellent, stackoverflow, avec deux questions.

Juste au cas où j'ai raté quelque chose: comment vous suggère que je réalise mon rêve unique .exe?

Et: pourquoi diable est-ce si difficile?

+0

Avez-vous essayé Nuitka? – mbdevpl

+0

Python n'a pas été créé pour compiler au fichier .exe et beaucoup de gens n'ont toujours pas besoin de fichier .exe donc c'est encore si compliqué. BTW. 'py2exe' (et similaire) crée un fichier .zip auto-extractible avec l'extension .exe, pas un vrai fichier .exe (comme le fait le compilateur C/C++). – furas

Répondre

3

Cette question est déjà répondu ici: py2exe - generate single executable file

PyInstaller va créer un seul fichier .exe sans dépendances; utilisez l'option --onefile. Il le fait en emballant toutes les librairies partagées nécessaires dans l'exécutable, et les déballant avant qu'il ne s'exécute, comme vous le décrivez (EDIT: py2exe a aussi cette fonctionnalité, voir la réponse de Mint)

+0

Oui, ce sont les réponses que j'ai déjà essayées. La réponse de l'utilisateur Minty est en fait ma "solution" actuelle, à partir de ma question (j'utilise le même code!) – ning