web-dev-qa-db-fra.com

Comment convertir un fichier .py en .exe pour Python?

J'essaie de convertir un programme Python assez simple en un exécutable et je ne pouvais pas trouver ce que je cherchais. J'ai donc quelques questions (j'utilise Python3.6):

Les méthodes de ce que j'ai trouvé jusqu'à présent sont les suivantes

  1. télécharger une ancienne version de Python et utiliser pyinstaller/py2exe 
  2. mettre en place un environnement virtuel en 3.6 qui me permettra de faire 1. 
  3. télécharger un convertisseur Python en C++ et l'utiliser.

Voici ce que j'ai essayé/quels problèmes j'ai rencontrés. 

  • J'ai installé pyinstaller avant le téléchargement requis avant (pypi-quelque chose) afin que cela ne fonctionne pas. Après avoir téléchargé le fichier de prérequis, pyinstaller ne le reconnaît toujours pas. 
  • Si je configure virtualenv dans la version 2.7, dois-je réellement installer la version 2.7? 
  • de même, les seuls convertisseurs python en C++ que je vois ne fonctionnent que jusqu’à python 3.5 - dois-je télécharger et utiliser cette version si je tente ceci?
72
user7396807

Etapes pour convertir .py en .exe en Python 3.6

  1. Installez Python 3.6 .
  2. Installez cx_Freeze (ouvrez votre invite de commande et tapez pip install cx_Freeze.
  3. Installez idna, (ouvrez votre invite de commande et tapez pip install idna.
  4. Ecrivez un programme .py nommé myfirstprog.py.
  5. Créez un nouveau fichier python nommé setup.py dans le répertoire actuel de votre script.
  6. Dans le setup.py, code ci-dessous et enregistrez-le.
  7. En maintenant la touche Maj enfoncée, cliquez avec le bouton droit de la souris sur le même répertoire pour pouvoir ouvrir une fenêtre d'invite de commande.
  8. Dans l'invite, tapez python setup.py build
  9. Si votre script ne contient pas d'erreur, la création de l'application ne posera aucun problème. 
  10. Vérifiez le dossier nouvellement créé build. Il y a un autre dossier dedans. Dans ce dossier, vous pouvez trouver votre application. Exécuter. Fais toi plaisir.

Voir le script original dans mon blog .

setup.py:

from cx_Freeze import setup, Executable

base = None    

executables = [Executable("myfirstprog.py", base=base)]

packages = ["idna"]
options = {
    'build_exe': {    
        'packages':packages,
    },    
}

setup(
    name = "<any name>",
    options = options,
    version = "<any number>",
    description = '<any description>',
    executables = executables
)

MODIFIER:

  • assurez-vous qu'au lieu de myfirstprog.py, vous devriez mettre votre nom de fichier .pyextension tel que créé dans step 4;
  • vous devez inclure chaque paquet imported de votre .py dans la liste packages (ex: packages = ["idna", "os","sys"])
  • any name, any number, any description dans le fichier setup.py ne devrait pas rester le même, vous devriez le changer en conséquence (ex: name = "<first_ever>", version = "0.11", description = '')
  • les packages imported doivent être installés avant de démarrer step 8.

Python 3.6 n'est toujours pas supporté par Pyinstaller. Donc, pour l'utiliser, vous aurez besoin de Python 3.5 ou ci-dessous. Je ne suis cependant pas sûr de py2exe.

Quoi qu'il en soit, le cas 1 devrait être fait comme ceci:

Ouvrez une fenêtre de commande dans votre dossier Python (ouvrez une fenêtre de commande et utilisez cd ou tout en maintenant la touche Maj enfoncée, faites un clic droit sur l’explorateur Windows et choisissez "Ouvrir la fenêtre de commande ici"). Puis entrez

pip install pyinstaller

Et c'est tout.

Le moyen le plus simple de l’utiliser est d’introduire sur votre invite de commande

pyinstaller file_name.py

Pour plus de détails sur son utilisation, jetez un œil à cette question .

Mettre à jour

Python 3.6 est maintenant supporté par Pyinstaller

41
Rodrigo Nascimento

Il y a un projet open source appelé auto-py-to-exe sur Github . En fait, il utilise également Pyinstaller en interne, mais comme il possède une interface graphique simple qui contrôle Pyinstaller, il peut constituer une alternative confortable. Il peut également générer un fichier autonome contrairement à d'autres solutions. Ils fournissent également une vidéo montrant comment le configurer.

GUI:

 Auto Py to Exe

Sortie:

 Output

7
Gab

Je ne peux pas vous dire ce qu'il y a de mieux, mais un outil que j'ai utilisé avec succès dans le passé était cx_freeze. Ils ont récemment mis à jour (le 7 janvier 17) la version 5.0.1, qui prend en charge Python 3.6. 

Voici le pypi https://pypi.python.org/pypi/cx_Freeze

Les documents montrent qu'il existe plus d'une façon de le faire en fonction de vos besoins.
http://cx-freeze.readthedocs.io/en/latest/overview.html

Je n'ai pas encore essayé, alors je vais vous montrer un article où la manière simple de le faire a été discutée. Certaines choses peuvent ou peuvent ne pas avoir changé cependant.
Comment utiliser cx_freeze?

6
Gerschel

py2exe est une extension distutils qui permet de créer des programmes exécutables Windows autonomes (32 bits et 64 bits) à partir de scripts Python. Python 3.3 et versions ultérieures sont pris en charge. Il peut créer des exécutables de console, des exécutables Windows (GUI), des services Windows et des serveurs COM DLL/EXE.

Vous pouvez le télécharger ici:

https://pypi.org/project/py2exe/

2
Tejas Joshi

J'utilise Nuitka et PyInstaller avec mon paquet PySimpleGUI.

Nuitka Il y avait des problèmes pour compiler Tkinter avec Nuikta. L'un des contributeurs du projet a développé un script qui corrige le problème. 

Si vous n'utilisez pas tkinter, cela peut "fonctionner" pour vous. Si vous utilisez tkinter, dites-le et je vais essayer de faire publier le script et les instructions.

PyInstaller J'utilise la version 3.6 et PyInstaller fonctionne parfaitement! La commande que j'utilise pour créer mon fichier exe est la suivante:

pyinstaller -wF monfichier.py

Le -wF créera un seul fichier EXE. Étant donné que tous mes programmes ont une interface graphique et que je ne souhaite pas afficher la fenêtre de commande, l'option -w masque la fenêtre de commande.

C’est aussi proche d’obtenir ce que ressemble un programme Winforms à exécuter écrit en Python.

0
MikeyB