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?

Dewal Tewari
la source
1
voir son tutoriel
Ashwini Chaudhary
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.

zenpoy
la source
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

euh
la source
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 )
Xooonas
la source