Come compilare uno script Python in un eseguibile binario


118

Devo convertire uno script Python in un eseguibile Windows.

Ho installato Python 2.6 su python26.

Ho creato uno script e l'ho mantenuto C:\pythonscript. All'interno di questa cartella ci sono due file

Setup.pye oldlogs.py(questo file necessita di copertura)

setup.py il codice è

from distutils.core import setup
import py2exe

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

Come posso convertire oldlogs.py in un file exe?



Per completezza, cx_Freeze è un altro strumento che puoi usare per questo (insieme a PyInstaller e py2exe, che altre risposte hanno già menzionato).
Thomas K

Risposte:


63

Oppure usa PyInstaller come alternativa a py2exe . Ecco un buon punto di partenza . PyInstaller ti consente anche di creare eseguibili per linux e mac ...

Ecco come si potrebbe usare abbastanza facilmente PyInstaller per risolvere il problema in questione:

pyinstaller oldlogs.py

Dalla documentazione dello strumento:

PyInstaller analizza myscript.py e:

  • Scrive myscript.spec nella stessa cartella dello script.
  • Crea una build di cartelle nella stessa cartella dello script se non esiste.
  • Scrive alcuni file di registro e file di lavoro nella cartella build.
  • Crea una cartella dist nella stessa cartella dello script se non esiste.
  • Scrive la cartella eseguibile myscript nella cartella dist.

Nella cartella dist trovi l'app in bundle che distribuisci ai tuoi utenti.


9
cx_Freeze è migliore, supporta anche Python 3.3.
Ashwini Chaudhary

Ehi, funziona anche con wine , almeno fino alla versione 3.4 di python, che supporta Windows XP. Davvero fantastico! Ho creato un eseguibile Windows con wine , python 3.4 e pip-Win (basta seguire le istruzioni di installazione sul sito web pyinstaller) sulla mia macchina Fedora Linux.
erik

3
@ AshwiniChaudhary, Entrambi sembrano multipiattaforma .. tuttavia, se dovessi giudicare rapidamente quale usare basandomi solo sulle GitHubstelle, PyInstallerha ~ 4000 stelle, cx_Freezeha 200 stelle. Quindi PyInstallersembra essere più popolare e probabilmente ha più casi limite coperti. perché pensi cx_Freezesia meglio di PyInstaller?
alpha_989

Notare che rispetto a PyInstaller, "cx_Freeze non supporta la creazione di un singolo file exe, in cui tutte le librerie per l'applicazione sono incorporate in un file eseguibile." cx-freeze.readthedocs.io/en/latest/…
Taylor Edmiston

12

Consiglio PyInstaller , un semplice script python può essere convertito in un exe con i seguenti comandi:

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

che crea un file yourprogram.spec che è una configurazione per la creazione dell'exe finale. Il comando successivo crea l'exe dal file di configurazione:

utils/Build.py oldlogs.spec

Altro può essere trovato qui


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 )
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.