Comment compiler un script python en exécutable binaire


118

J'ai besoin de convertir un script Python en exécutable Windows.

J'ai Python 2.6 installé sur python26.

J'ai créé un script et je l'ai conservé C:\pythonscript. Dans ce dossier, il y a deux fichiers

Setup.pyet oldlogs.py(ce fichier nécessite une conversion)

setup.py le code est

from distutils.core import setup
import py2exe

setup(console=['oldlogs.py'])

Comment puis-je convertir oldlogs.py en un fichier exe?



Par souci d' exhaustivité, cx_Freeze est un autre outil que vous pouvez utiliser pour cela (avec PyInstaller et py2exe, que d'autres réponses ont déjà mentionnées).
Thomas K

Réponses:


63

Ou utilisez PyInstaller comme alternative à py2exe . Voici un bon point de départ . PyInstaller vous permet également de créer des exécutables pour Linux et Mac ...

Voici comment on pourrait assez facilement utiliser PyInstaller pour résoudre le problème en question:

pyinstaller oldlogs.py

À partir de la documentation de l'outil:

PyInstaller analyse myscript.py et:

  • Écrit myscript.spec dans le même dossier que le script.
  • Crée un dossier dans le même dossier que le script s'il n'existe pas.
  • Écrit certains fichiers journaux et fichiers de travail dans le dossier de construction.
  • Crée un dossier dist dans le même dossier que le script s'il n'existe pas.
  • Écrit le dossier exécutable myscript dans le dossier dist.

Dans le dossier dist, vous trouvez l'application fournie que vous distribuez à vos utilisateurs.


9
cx_Freeze est meilleur, il prend même en charge python 3.3.
Ashwini Chaudhary

Hé, cela fonctionne même avec wine , au moins jusqu'à la version 3.4 de python, qui prend en charge Windows XP. Vraiment super! J'ai créé un exécutable Windows avec wine , python 3.4 et pip-Win (suivez simplement les instructions d'installation sur le site Web de pyinstaller) sur ma machine Fedora Linux.
erik

3
@AshwiniChaudhary, Les deux semblent être multiplateformes .. cependant, si je devais rapidement juger lequel utiliser uniquement en fonction des GitHubétoiles, PyInstallera ~ 4000 étoiles, cx_Freezea 200 étoiles. Cela PyInstallersemble donc être plus populaire et a probablement plus de cas de bord couverts. pourquoi pensez-vous que cx_Freezec'est mieux que PyInstaller?
alpha_989

Notez que par rapport à PyInstaller, "cx_Freeze ne prend pas en charge la création d'un seul fichier exe, où toutes les bibliothèques de votre application sont incorporées dans un fichier exécutable." cx-freeze.readthedocs.io/en/latest/…
Taylor Edmiston

12

Je recommande PyInstaller , un simple script python peut être converti en un exe avec les commandes suivantes:

utils/Makespec.py [--onefile] oldlogs.py

qui crée un fichier yourprogram.spec qui est une configuration pour construire l'exe final. La commande suivante crée l'exe à partir du fichier de configuration:

utils/Build.py oldlogs.spec

Plus peut être trouvé ici


1
# -*- mode: python -*-

block_cipher = None

a = Analysis(['SCRIPT.py'],
             pathex=[
                 'folder path',
                 'C:\\Windows\\WinSxS\\x86_microsoft-windows-m..namespace-downlevel_31bf3856ad364e35_10.0.17134.1_none_50c6cb8431e7428f',
                 'C:\\Windows\\WinSxS\\x86_microsoft-windows-m..namespace-downlevel_31bf3856ad364e35_10.0.17134.1_none_c4f50889467f081d'
             ],
             binaries=[(''C:\\Users\\chromedriver.exe'')],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='NAME OF YOUR EXE',
          debug=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=True )
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.