Comment puis-je convertir un .py en .exe pour Python?


126

J'essaie de convertir un programme Python assez simple en un exécutable et je n'ai pas trouvé ce que je cherchais, donc j'ai quelques questions (j'utilise Python 3.6):

Les méthodes pour ce faire que j'ai trouvées 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 Python 3.6 qui me permettra de faire 1.
  3. télécharger un convertisseur Python vers C ++ et l'utiliser.

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

  • J'ai installé pyinstalleravant le téléchargement requis avant (pypi-quelque chose) donc cela n'a pas fonctionné. Après avoir téléchargé le fichier prérequis, pyinstallerne le reconnaît toujours pas.
  • Si je configure un virtualenv dans Python 2.7, dois-je réellement avoir Python 2.7 installé?
  • de même, les seuls convertisseurs python vers C ++ que je vois ne fonctionnent que jusqu'à Python 3.5 - dois-je télécharger et utiliser cette version si j'essaie cela?

4
Je ne sais pas pourquoi cela est décliné (peut-être parce que les recommandations d'outils sont hors sujet pour SO), mais cette question sera utile pour d'autres à l'avenir. Les questions précédentes similaires n'ont pas été marquées hors-sujet, par exemple stackoverflow.com/questions/2136837/…
Chris_Rands

Réponses:


127

Étapes pour convertir .py en .exe dans 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. Écrivez un .pyprogramme nommé myfirstprog.py.
  5. Créez un nouveau fichier python nommé setup.pydans le répertoire actuel de votre script.
  6. Dans le setup.pyfichier, copiez le code ci-dessous et enregistrez-le.
  7. Avec la touche Maj enfoncée, faites un clic droit sur le même répertoire, vous pouvez donc ouvrir une fenêtre d'invite de commande.
  8. Dans l'invite, tapez python setup.py build
  9. Si votre script est sans erreur, il n'y aura aucun problème lors de la création de l'application.
  10. Vérifiez le dossier nouvellement créé build. Il contient un autre dossier. 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
)

ÉDITER:

  • assurez-vous qu'au lieu de myfirstprog.pyvous devez mettre votre .pynom de fichier d'extension tel que créé à l' étape 4 ;
  • vous devez inclure chaque importpaquet ed dans votre .pydans la packagesliste (ex: packages = ["idna", "os","sys"])
  • any name, any number, any descriptiondans le setup.pyfichier ne doit pas rester le même, vous devez le changer en conséquence (ex: name = "<first_ever>", version = "0.11", description = '')
  • les importpackages ed doivent être installés avant de commencer l' étape 8 .

10
Existe-t-il un moyen de le rendre exécutable «autonome»? Si je procède comme vous le conseillez dans votre article, je me retrouve avec le dossier exe.win.32-3.6. qui est plein de fichiers et de répertoires de support (comme «collections /», «email», etc.). Terrible pour une simple impression («bonjour»). Je voudrais créer un seul fichier exécutable qui fonctionnera tel quel sur un autre ordinateur, sans avoir besoin d'autres fichiers. Y a-t-il une option de construction pour cela?
FanaticD


2
@FanaticD Python n'est pas votre meilleur pari. Cython (un cauchemar pour se mettre au travail) ou Nuitka serait votre meilleur pari. Mais les faire fonctionner est une réussite en soi.
Tetora

Cela fonctionnerait-il dans Python 3.5.3? (La dernière version stable sur Debian 9 Stretch).
Gerard

Comment importer from sklearn.externals import joblib? comme mentionné dans l'édition, étape 2.
Jack

77

Python 3.6 est pris en charge par PyInstaller.

Ouvrez une fenêtre cmd dans votre dossier Python (ouvrez une fenêtre de commande et utilisez cdou tout en maintenant la touche Maj enfoncée, faites un clic droit dessus dans l'Explorateur Windows et choisissez «Ouvrir la fenêtre de commande ici»). Alors entrez simplement

pip install pyinstaller

Et c'est tout.

Le moyen le plus simple de l'utiliser est de saisir votre invite de commande

pyinstaller file_name.py

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


4
juste testé avec python 3.7.0. Beaucoup d'avertissements, mais compilés avec succès et fonctionnant sous Windows 10
Ole_S

2
J'ai compilé un programme avec python 3.5.0 et aucun avertissement ni erreur, et il fonctionne comme prévu
Menotdan

Est-ce que quelqu'un sait ce qui compte dans un Pyinstaller? Un exe construit-il sur Windows 10 fonctionnera-t-il dans Windows 8? ou Windows 10 32bit build fonctionnera-t-il dans les systèmes Windows 10 64 bits?
Derik81

27

Il existe 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, cela peut être 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 à Exe

Production:

Production


2
Vous devriez avoir mentionné qu'il nécessite MVC ++. erreur: Microsoft Visual C ++ 14.0 est requis.
SKR

3
Je ne trouve aucune valeur à cela car il est construit sur pyinstaller et si vous obtenez une erreur dans pyinstaller, vous l'aurez ici aussi!
CV_passionate

9

Je ne peux pas vous dire ce qui est le 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 2017) vers la version 5.0.1 et il prend en charge Python 3.6.

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

La documentation montre qu'il existe plusieurs façons de le faire, selon vos besoins. http://cx-freeze.readthedocs.io/en/latest/overview.html

Je ne l'ai pas encore essayé, donc je vais signaler un article où la manière simple de le faire a été discutée. Cependant, certaines choses peuvent ou non avoir changé.

Comment utiliser cx_freeze?


11
Il convient de mentionner que cxFreeze ne fait pas d'exécutables à fichier unique.
Eddie Hart

7

J'utilise Nuitka et PyInstaller avec mon package, PySimpleGUI.

Nuitka Il y a eu des problèmes pour que tkinter compile avec Nuikta. Un des contributeurs du projet a développé un script qui a résolu le problème.

Si vous n'utilisez pas tkinter, cela peut "juste fonctionner" pour vous. Si vous utilisez tkinter, dites-le et j'essaierai de publier le script et les instructions.

PyInstaller J'utilise la version 3.6 et PyInstaller fonctionne très bien! La commande que j'utilise pour créer mon fichier exe est:

pyinstaller -wF monfichier.py

Le -wF créera un seul fichier EXE. Parce que tous mes programmes ont une interface graphique et que je ne veux pas que la fenêtre de commande s'affiche, l'option -w masquera la fenêtre de commande.

C'est aussi proche d'obtenir ce qui ressemble à un programme Winforms à exécuter qui a été écrit en Python.

[Mise à jour du 20 juillet 2019]

Il existe une solution basée sur l'interface graphique PySimpleGUI qui utilise PyInstaller. Il utilise PySimpleGUI. Il s'appelle pysimplegui-exemaker et peut être installé par pip.

pip install PySimpleGUI-exemaker

Pour l'exécuter après l'installation:

python -m pysimplegui-exemaker.pysimplegui-exemaker


5

Vous pouvez maintenant le convertir en utilisant PyInstaller. Je travaille même avec Python 3.

Pas:

  1. Allumez votre PC
  2. Ouvrir l'invite de commande
  3. Entrez la commande pip install pyinstaller
  4. Lorsqu'il est installé, utilisez la commande 'cd' pour accéder au répertoire de travail.
  5. Exécuter la commande pyinstall <filename>

Pourquoi les gens votent-ils contre cela? Je poste juste cette réponse pour aider.
Tejas Joshi

3
parce que cela ne fonctionne pas sur Python 3.6 qu'OP a spécifiquement écrit qu'il utilise.
uri

Pyinstaller devrait fonctionner maintenant. Si ce n'est pas le cas, dites-moi dans les commentaires
Tejas Joshi
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.